2

それぞれの ID フィールドが同じである DataSet に 2 つのテーブルがあります。2 つのテーブル間に関係があります。C# コードで、Table1 の情報に関連する Table2 から情報を取得するにはどうすればよいですか?

新しい DataRow を使用して GetChildRow を使用して割り当てようとしましたが、何らかの理由で機能しないようです。

また、この質問があまり参考にならないことも承知しておりますので、お知らせいただければ、より明確に説明できるよう努めます。

4

4 に答える 4

1

DataSet が厳密に型指定されている (つまり、.xsd ファイルから生成されている) 場合、答えは異なります (そして非常に簡単です)。以下ではそうではないと思いますが、そうである場合は声を上げてください。

一般的な DataSet オブジェクトの場合、その答えは、何を持っているかによって大きく異なります。単純な ID がある場合は、関連する DataTable の選択で ID を使用するのがおそらく最も簡単です。これは、探している情報を含む DataRows の配列を返すため、どちらか (または両方) のテーブルで機能します。

親 DataRow がある場合 (実際にそうである可能性が高いと思われます)、使用する最適な方法は関係 (つまり、どちらが親であるか) によって異なります。Table1 が親で、関連する Table2 の子行に移動したい場合は、GetChildRow を探しています (従うべき関係をできるだけ具体的に指定するのが最善です)。Table2 が親で、Table1 の DataRow から Table2 の親に移動する場合は、GetParentRow を使用する必要があります (ここでも、リレーションをできるだけ具体的に識別します。手元にある場合はリレーション オブジェクトを使用します)。 )。

于 2009-01-07T23:27:49.100 に答える
1

厳密に型指定された DataSet では、各 DataRow オブジェクトは、関係ごとに特定のメソッドまたはプロパティを持ちます。親の DataRow があり、Table2 の子に移動する場合は、複数形のメソッドになります (つまり、「row.GetTable2Rows()」)。子があり、親に移動したい場合は、単一のプロパティ ("row.Table2Row") になります。

于 2009-01-07T23:52:52.840 に答える
0

コメントはこの応答には十分な長さではなかったので、別の答えにします。

新しいテーブルを使用する必要はありません。行オブジェクトの配列を使用して、そこから移動します。DataSet名前空間が「EventData」であるとしましょう。少し分解して、すべてが1行にならないようにします。

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

次に、eventGroup [0]を使用して最初の要素を取得するなど、必要に応じて「eventGroup」配列を操作できます。

于 2009-01-08T22:17:35.887 に答える
0

だからここに私がしたことがあります。これが最善かどうか、またはもっと速いものがあれば教えてください。表 2 の正確なレプリカである新しいテーブルを作成し、次のコードを記述しました。

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

次に、レコード 0 にある 1 つのテーブルを呼び出して、必要な名前を取得します。それは機能しますが、より効率的な方法はありますか?

于 2009-01-08T16:21:01.333 に答える