Holen Sie sich die Unterschiede in den 2 Datensätze c#

Schreibe ich einen kurzen Algorithmus hat zu vergleichen die beiden Datensätze, so dass die Unterschiede zwischen den beiden weiter verarbeitet werden können.
Ich tryed erreichen dieses Ziel durch die Zusammenlegung dieser beiden Datensätze und erhalten die daraus resultierenden Veränderungen in ein neues DataSet.

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;
    }

Ergebnis foundChanges ist immer false, auch wenn die beiden Datensätze unterschiedliche Werte.
Beide Datensätze haben die gleiche strukture. Sie bestehen aus drei DataTables, die das Ergebnis von drei Abfragen in einer Datenbank.
Das Zusammenführen funktioniert gut, keine Probleme.

Meine Frage ist:
Gibt es irgendeine vernünftige Erklärung, warum die foundChanges variable ist immer falsch und wenn nicht, würde Linq eine geeignete Lösung für dieses problem oder muss ich, um zu bestimmen, die Veränderungen, die durch Durchlaufen der Datensätze

Hier sind einige weitere Informationen:
Die Programmiersprache ist C#
Ich bin mit .Net framework 4.0
Ich entwickle auf einem Windows 8-Computer
Die beschriebenen Daten stammen aus einer Datenbank(MSSQL-Server 2012 express)
Meine DataSets oder DataTables haben keine PK ' s, soweit ich weiß.

Vielen Dank im Voraus

  • In der Regel, was Sie tun würde, ist, nehmen Sie ein dataset oldVersion und ändern Sie es. Dann oldVersion enthält alle von den neuen änderungen. Sie könnte dann rufen DataSet-diff = oldVersion.GetChanges().
  • Sie können das nützlich finden: stackoverflow.com/a/7518025/211627
InformationsquelleAutor Bongo | 2012-12-27
Schreibe einen Kommentar