Frage

Ich habe zwei Tabellen in einem DataSet in dem das ID-Feld auf jeweils gleich ist. Ich habe eine Beziehung zwischen den beiden Tabellen. Wie kann ich in C # -Code, ziehen Sie die Informationen aus Tabelle 2, die zum Eintrag auf Tabelle 1 bezieht sich?

Ich habe versucht, ein neues DataRow verwenden und es durch die Verwendung GetChildRow, aber aus irgendeinem Grund die Zuordnung scheine ich kann es nicht funktioniert.

Auch verstehe ich diese Frage nicht so informativ sein können, lassen Sie mich wissen und ich werde versuchen, mehr Klarheit zu schaffen.

War es hilfreich?

Lösung

Die Antwort ist anders (und wesentlich einfacher), wenn Ihr DataSet stark typisierte (das heißt aus einer XSD-Datei erzeugt). Ich nehme an, das ist nicht der Fall unten, aber wenn es sprechen ist.

Für allgemeine DataSet Objekte, hängt die Antwort weitgehend auf das, was Sie halten, zu starten. Wenn Sie einfach eine ID haben, dann ist es wahrscheinlich am einfachsten, die ID in einem auserwählten auf der entsprechenden Datentabelle zu verwenden. Dies funktioniert entweder für (oder beide) Tabellen da es eine Reihe von DataRows mit den Informationen zurückgeben, die Sie suchen.

Wenn Sie eine übergeordnete DataRow haben (und es scheint wahrscheinlich, dass Sie tun), dann ist die beste Methode hängt von der Beziehung-d.h zu verwenden. das ist der Elternteil. Wenn Table1 Ihre Eltern ist, und Sie möchten relevant Table2 Kind Zeilen navigieren, suchen Sie nach GetChildRow (am besten sein, so spezifisch wie können Sie es sagen, welche Beziehung zu folgen). Wenn Table2 der Eltern ist und Sie von einem Table1 DataRow an die Eltern in Tabelle 2 der Navigation, werden Sie GetParentRow (wieder verwenden möchten, so genau zu identifizieren, die die Beziehung, wie Sie die Beziehung Objekt-verwenden, wenn Sie es zur Hand haben ).

Andere Tipps

In einem stark typisierte Datasets, die jeweils DataRow Objekt haben spezielle Methoden oder Eigenschaften für jede Beziehung. Wenn Sie ein Elternteil DataRow haben und wollen Kinder in Tabelle 2 navigieren, wird es eine plurale Verfahren (das heißt „row.GetTable2Rows ()“) sein. Wenn Sie ein Kind haben, und wollen die Eltern navigieren, wird es eine einzigartige Eigenschaft sein ( „row.Table2Row“).

So, hier ist das, was ich tat. Lassen Sie mich wissen, ob dies am besten, wenn oder es etwas schneller ist. Ich habe eine neue Tabelle, die eine exakte Kopie der Tabelle 2 und schrieb diesen Code:

currentDataSet.GroupTableOneRow.Clear();
currentDataSet.GroupAttendingEventTable[groupAttendingEventCounter].GetGroupTableRows().CopyToDataTable(currentDataSet.GroupTableOneRow, LoadOption.OverwriteChanges);

Dann kann ich den einen Tisch auf Rekord Null anrufen und erhalten den Namen ich brauche. Es funktioniert, aber ist es ein efficent Weg?

Ein Kommentar nicht lang genug für diese Antwort war so werde ich es machen eine andere Antwort:

Es gibt keine Notwendigkeit, eine neue Tabelle zu verwenden. Verwenden Sie einfach eine Reihe von Zeilenobjekte und gehen von dort aus. Sagen Sie Ihre DataSet Namespace ist „Eventdata“ und ich werde es bricht ein wenig nach unten, so dass es nicht alle auf einer Linie ist.

// The parent row
EventData.GroupAttendingEventRow groupAttendingEvent = currentDataSet.GroupAttendingEventTable[groupAttendingEventCounter];
// an array of children rows
EventData.GroupTableRow[] eventGroup = groupAttendingEvent.GetGroupTableRows();

Dann können Sie auf der „Eventgroup“ Array handeln, wie Sie mit sich mit Eventgroup am ersten Element immer [0].

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top