So erhalten Sie den Unterschied zwischen zwei DataTables
Habe ich diese zwei datatables und möchte ich, um den Unterschied zwischen Ihnen. Hier ist ein Beispiel:
Table1
-------------------------
ID | Name
--------------------------
1 | A
2 | B
3 | C
--------------------------
Table2
-------------------------
ID | Name
--------------------------
1 | A
2 | B
--------------------------
Ich will einfach nur das Ergebnis als Daten, die in Tabelle1 und nicht in Tabelle2 (Tabelle1-Tabelle2)
ResultTable
-------------------------
ID | Name
--------------------------
3 | C
--------------------------
Ich habe versucht, diese beiden ähnlichen Lösungen über Linq, aber es immer wieder "Tabelle1" und nicht Tabelle1-Tabelle2. Hier ist die erste Lösung:
DataTable table1= ds.Tables["table1"];
DataTable table2= ds.Tables["table2"];
var diff= table1.AsEnumerable().Except(table2.AsEnumerable(),DataRowComparer.Default);
Zweite Lösung:
var dtOne = table1.AsEnumerable();
var dtTwo = table2.AsEnumerable();
var difference = dtOne.Except(dtTwo);
So, wo ist der Fehler??? Vielen Dank für alle Eure Antworten. 🙂
InformationsquelleAutor der Frage user2095405 | 2013-02-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie versuchen, den folgenden code...
InformationsquelleAutor der Antwort Amol Kolekar
Ich ging gerade durch und wollte zu teilen meine Erkenntnisse. Für meine Anwendung ist es eine Daten-Synchronisierungs-Mechanismus, aber ich denke, Sie werden sehen, wie dies gilt für die ursprüngliche Frage.
In meinem Fall hatte ich eine
DataTable
vertreten, dass meine letzten Daten-upload und irgendwann in der Zukunft, die ich brauche, um die aktuellen Zustand der Daten und der upload ist nur die Unterschiede.Ich hoffe, das hilft. Ich kämpfte mit diesem für ein paar Stunden, und fand viele falsch-führt auf das interwebz, und endete vergleichen
RowStates
nach der Zusammenführung ein paar verschiedene MöglichkeitenInformationsquelleAutor der Antwort Kevin.Hardy
Werde ich versuchen, es zu tun auf einer Spalte-Ebene statt auf eine DataTable.
Nur das hinzufügen einer
.Select()
auf deine Antwort...InformationsquelleAutor der Antwort SKJ
Versuchen, diese
InformationsquelleAutor der Antwort Madhu
Versuchen unten, das ist ziemlich einfach. Zusammenführen von zwei sets zusammen, und erhalten die Differenz. Wenn die sets dont richten Sie sich richtig, dann wird dies nicht funktionieren.
Versucht zu Testen
InformationsquelleAutor der Antwort user6826239
Versuchen Sie die unter Vorgehensweise:
Initialisierung:
Lösung:
Oben genannte Lösung funktioniert auch, wenn es neue Zeilen in Tabelle2, die nicht anwesend waren in Tabelle1.
distintTable
constains C und D.InformationsquelleAutor der Antwort Ryszard Dżegan
Versuchen unten, das ist ziemlich einfach. Zusammenführen von zwei sets zusammen, und erhalten die Differenz. Wenn die sets dont richten Sie sich richtig, dann wird dies nicht funktionieren.
InformationsquelleAutor der Antwort TGarrett