LINQ und Unterschiede in zwei List<T> feststellen



  • Hallo zusammen,

    ich habe zwei List<MeinKlasse>. Die erste stellt den Zustand vor und die zweite den Zustand nach der Aktualisierung aus einer Datenbank dar.

    List<MeinKlasse> temp1 = DatenAusDatenbank;
    Mache Änderungen in der Datenbank;
    Speichere Änderungen in der Datenbank;
    List<MeinKlasse> temp2 = DatenAusDatenbank;

    temp1 und temp2 irgendwie vergleichen;

    Es kann vorkommen, dass List2 nach der Aktualisierung mehr oder weniger Elemente enthält.
    Es kann aber auch sein, dass die Anzahl gleich bleibt aber sich eine Eigenschaft in einer oder mehrere Klassen geändert hat.

    Was ich nun brauche ist ein Vergleich und als Ergebnis, falls nur Änderungen in einer Klasse stattgefunden haben, die Elemente die sich in der List2 im Gegegnsatz zu List1 geändert haben.

    Also Info, jede Klasse hat die Eigenschaft ID aus der Datenbank.

    Es wäre zusätzlich noch ganz nett, wenn ich bei einer Änderung der Anzahl in der List2 als Ergebnis noch zusätzlich die ID('s) bekomme die hinzugekommen oder gelöscht wurden.



  • Läuft auf einen full outer join raus.
    Plus Überprüfung ob die Elemente die auf beiden Seiten vorhanden sind gleich sind.

    Full outer join gibt's in LINQ aber nicht. Also entweder mit mehr oder weniger grässlichen Konstrukten drum rumarbeiten (z.B. sowas wie LEFT JOIN UNION RIGHT JOIN
    *würg*)...
    Oder die Sache einfach auf die Schnelle ohne LINQ implementieren - was vermutlich sogar schneller laufen wird.



  • Na da sollte doch eigentlich Except was fuer dich sein. HashCode und Equals ueberschreiben und ab geht die Lutzi.


Anmelden zum Antworten