2017-06-29 6 views
0

Ich bin gespannt, wie ich zwei Datentabellen in C# vergleichen kann. Ich habe zwei Datentabellen, Datentabelle eine enthält FirstName und LastName, Datentabelle 2 hat Field1, Field2, First_Name und Last_Name.Vergleichen Sie zwei DataTables für nicht übereinstimmende Datensätze C#

Ich möchte Datensätze finden, die in Datentabelle 1 vorhanden sind, die nicht in Datentabelle 2 vorhanden sind. Jeder jemals zuvor getan? Jede Hilfe wäre willkommen. Vielen Dank!

+0

Was haben Sie versucht? Poste deinen Code – maccettura

+0

Ich frage, weil dies etwas ist, was ich vorher noch nicht getan habe, sogar Links, die klar erklären, wie es gemacht wird, wären in Ordnung. Ich habe Artikel über Google gelesen, aber sie haben keinen Sinn ergeben oder der Autor ist etwas verwirrend. Ich frage nur nach einem Brotkrumen hier, um mich auf meinen Weg zu starten. Vielen Dank! – bbcompent1

+0

Sie können Linq verwenden: https://stackoverflow.com/questions/9289475/difference-of-two-datatables-in-c-sharp – naturalbornlazy

Antwort

1

Verwenden von LINQ wäre am natürlichsten, aber Sie müssen von der DataTable konvertieren, um Except zu verwenden.

var In_dt1_only = dt1.AsEnumerable().Select(r => new { first = r.Field<string>("First"), last = r.Field<string>("Last")}).Except(dt2.AsEnumerable().Select(r => new { first = r.Field<string>("First"), last = r.Field<string>("Last")})); 

Wenn Sie die ursprünglichen DataRow s benötigen, können Sie ein Where statt:

var datarows_in_dt1_only = dt1.AsEnumerable().Where(dr1 => !dt2.AsEnumerable().Any(dr2 => dr1.Field<string>("First") == dr2.Field<string>("First") && dr1.Field<string>("Last") == dr2.Field<string>("Last"))); 
+0

Ich werde das einen Versuch morgen früh geben, danke! – bbcompent1

+0

Ok, das hat super funktioniert, das einzige, was ich tun musste, war die beiden Datentabellen zu tauschen, dann habe ich das erwartete Ergebnis. Vielen Dank für deine Hilfe! – bbcompent1

Verwandte Themen