Angenommen, ich habe zwei .NET Tables bevölkert wie folgt, wobei ID der Primärschlüssel ist, und wo null
bedeutet eine DBNull.Value
(nicht die Zeichenfolge "null"
):Kann ich zwei .NET DataTables zusammenführen, ohne Nullwerte zusammenzuführen, ohne die Zeilen selbst durchlaufen zu müssen?
|Table A | |Table B |ID |Column1 |Column2 | |ID |Column1 |Column2 | |1 |foo |10 | |1 |zzz |null | |2 |baz |20 | |2 |null |99 |
ich eine Zusammenführung dieser Tabellen tun wollen, wo das Ergebnis wird sein:
|ID |Column1 |Column2 | |1 |zzz |10 | |2 |baz |99 |
Mit anderen Worten, ich die Daten aus der Tabelle B in Tabelle A, wie DataTable.Merge
tut, aber anstatt das Kopieren der gesamten Zeile von Tabelle B, wenn die IDs übereinstimmen zusammenführen möchten, Ich möchte nur die Felder kopieren wo Die Daten sind nicht null.
Ich könnte meine eigenen Schleifen durch die Zeilen beider Tabellen schreiben, um dies zu tun, aber ich frage mich, ob es bereits eine Methode in den Bibliotheken gibt, so dass ich meine eigene Version von DataTable.Merge
nicht umschreiben muss.
Nein, das funktioniert nicht ... wie geschrieben, fügt einfach die Zeilen der zweiten Tabelle am unteren Rand hinzu, ohne Zeilen mit der gleichen PK zu aktualisieren (da Sie den "Union" nicht den Primärschlüssel hinzugefügt haben Tabelle). Ich habe versucht, LoadDataRow nach dem Hinzufügen des Primärschlüssels, aber das tut dasselbe wie DataTable.Merge - es aktualisiert die gesamte Zeile mit allen Werten aus der zweiten Tabelle, einschließlich der Nullen. Ich landete meine eigene ... oh well. – Micah