2010-12-27 22 views
2

Ich habe eine stark typisierte Datenmenge (VB.NET), mit .NET Framework 2.0. Gegeben ein DataRow in einem Elternteil DataTable und ein DataRelation, muss ich alle verwandten Zeilen in dem Kind DataTable finden, die eine RowState = DataRowState.Deleted haben..net Dataset, wie untergeordnete Zeilen gelöscht werden

Leider enthält DataRow.GetChildRows(DataRelation) keine untergeordneten Zeilen, die eine RowState von DataRowState.Deleted haben.

Momentan mache ich einen Table-Scan der Child-Tabelle, um die gelöschten Zeilen zu finden, die den Kriterien der Relation entsprechen, aber meine Tabellen sind zu groß geworden, damit das funktioniert. Wie kann ich die gelöschten untergeordneten Zeilen mit annehmbarer Leistung erhalten?

+0

sprechen wir WinForms oder ASP.Net? – DOK

+0

winforms, sorry –

Antwort

1

löste dies mit GetChildRows(relation, DataRowVersion.Original). Dann iteriere durch diese Zeilen und schnapp dir die mit RowState = DataRowState.Deleted.

2

Sie können DataSet.GetChanges verwenden und den DataRowState.Deleted-Parameter übergeben. Es sollte ein DataSet zurückgeben, das alle als gelöscht markierten Zeilen enthält.

+0

hilfreiche Info (ich upvoted), aber ich habe einen großen Datensatz (viele Tabellen) und bin nur an einer bestimmten Tabelle interessiert. table.getchanges würde wahrscheinlich funktionieren, außer dass ich keine Kopie der Tabelle möchte - ich möchte die eigentlichen Datarows, da ich ein Update für sie durchführe. –