Ich habe so lange geschaut, ich kann nicht sehen, was ich tue. Ich versuche, zwei Datentabellen in C# durchzulaufen und eine Liste von Elementen in table2
zu erstellen, die nicht exakt übereinstimmen oder nicht in table1
enthalten sind. Allerdings bekomme ich immer die vollständige Liste der table2
Artikel. Es ist ein blöder Logikfehler, den ich nicht sehen kann. Kann jemand sehen, was ich hier vermisse?Looping durch DataTables, um Unterschiede zu finden
Vielen Dank.
string results = null;
foreach (DataRow row1 in table2.Rows)
{
int x = 0;
foreach (DataRow row2 in table1.Rows)
{
var array1 = row1.ItemArray;
var array2 = row2.ItemArray;
if (array1.SequenceEqual(array2))
{
x = 1;
break; // get out of the loop and continue
}
else
{
continue;
}
}
if (x == 0)
{
results = results + (row1["Drug"]);
}
}
Sollten Sie dies nicht in einer Abfrage tun? Wenn Tabelle 2 nicht die gleiche Anzahl von Zeilen und in der gleichen Reihenfolge wie Tabelle 1 hat, können Sie sie nie auf diese Weise durchlaufen. Auch wenn Ihr Code "IEqualityComparer" implementiert hat, vergleicht SequenceEqual, dass die Referenzen die gleichen sind, nicht nur die Daten. https://msdn.microsoft.com/en-us/library/bb348567(v=vs.100).aspx –
jac
Wenn Sie versucht haben, einen Haltepunkt zu platzieren, dann hätten Sie bemerkt, dass das 'x == 0 'immer wahr ist weil 'array1.SequenceEqual (array2)' niemals wahr ist. Auch sollte es keine Ausnahme geben, weil die Ergebnisse null sind und dann fügen Sie '(row1 [" Drug "])' hinzu –