Zwei Datensätze vergleichen - Änderungen finden - LINQ

9

Ich habe das Internet durchforstet, um eine Lösung dafür zu finden, und vielleicht mache ich das nicht richtig.

Ich muss zwei Datensätze vergleichen, die in der Struktur identisch sind, und möchte neue und geänderte Objekte finden (mit LINQ).

Mit Hilfe dessen, was ich bei CodeProject gefunden habe, konnte ich mich zusammenreißen eine Liste von Elementen, die sich geändert haben, aber dies wurde getan, indem jede Spalte hart codiert wurde (und es wird viele geben) und auf identische Werte überprüft werden:

%Vor%

Ich könnte Hilfe mit 2 Dingen gebrauchen:

  1. Gibt es eine effizientere Methode zum Durchlaufen der einzelnen Spalten , da ich viele weitere Eigenschaften hinzufügen möchte, die ich vergleichen muss? Es muss einen besseren Weg geben, zwei identische Datensätze dynamisch auf Änderungen zu überprüfen.
  2. Wie kann ich sehen, welche -Eigenschaft sich geändert hat? Beispiel: Erstellen einer Liste von "Property, OriginalValue, UpdatedValue" für alle Elemente, die nicht identisch sind?

Hoffentlich erklärt es das gut. Bitte zögern Sie nicht, mich auf andere Arten des Umgangs mit diesem Szenario zu verweisen, wenn ich es nicht richtig ansehe.

    
JBickford 29.08.2013, 18:45
quelle

2 Antworten

1

Sie können die LINQ Except () - Erweiterungsmethode verwenden. Das gibt alles in einer Liste zurück, außer was in der zweiten Liste steht.

%Vor%

Abhängig von Ihrem Datenprovider müssen Sie möglicherweise Equals () und GetHashCode () für Ihre Objekte überschreiben.

    
DarcyThomas 23.10.2013 23:27
quelle
0
  1. Schneller, aber Sie müssen Code pflegen, wenn Sie neue Eigenschaften hinzufügen, um einen benutzerdefinierten Vergleicher zu schreiben und Ihren Ansatz zu verwenden.
  2. Verwenden Sie die Reflexion langsamer, um alle Eigenschaften zu durchlaufen und sie dynamisch zu vergleichen

    %Vor%

und dann in dir Code

%Vor%     
syned 29.08.2013 19:47
quelle

Tags und Links