Ich schreibe einen kurzen Algorithmus, der zwei DataSets vergleichen muss, damit die Unterschiede zwischen beiden weiterverarbeitet werden können. Ich versuchte dieses Ziel zu erreichen, indem ich diese zwei DataSets zusammenfasste und die resultierenden Änderungen in ein neues DataSet brachte.bekomme die Unterschiede in 2 DataSets C#
Meine Methode sieht wie folgt aus:
private DataSet ComputateDiff(DataSet newVersion, DataSet oldVersion)
{
DataSet diff = null;
oldVersion.Merge(newVersion);
bool foundChanges = oldVersion.HasChanges();
if (foundChanges)
{
diff = oldVersion.GetChanges();
}
return diff;
}
Das Ergebnis foundChanges immer falsch ist, auch wenn die beiden Datensätze in es unterschiedliche Werte haben. Beide DataSets haben die gleiche Struktur. Sie bestehen aus drei DataTables, die das Ergebnis von drei Querys in einer Datenbank sind. Die Zusammenführung funktioniert gut, keine Probleme damit.
Meine Frage ist: Gibt es eine vernünftige Erklärung, warum die foundChanges Variable immer falsch ist, und wenn nicht, würde Linq eine richtige Lösung für dieses Problem bieten oder muss ich die Änderungen bestimmen, indem Sie durch die Datensätze iterieren
hier sind einige weitere Informationen: Die Programmiersprache ist C# ich bin mit .NET Framework 4.0 ich auf einem Windows-8-Maschine Die Daten entwickle wie kommt aus einer Datenbank (MSSQL Server 2012 Express) erwähnten My Datasets oder Tables haven Ich habe keine PKs, soweit ich weiß.
Vielen Dank im Voraus
In der Regel nehmen Sie eine Dataset oldVersion und ändern sie. Dann würde oldVersion alle neuen Änderungen enthalten. Sie könnten dann DataSet diff = oldVersion.GetChanges() aufrufen. –
Sie können dies nützlich finden: http://stackoverflow.com/a/7518025/211627 – JDB