58

2つのDataTable(dtOneとdtTwo)があり、それらをマージして別のDataTable(dtAll)に配置したい場合。C#でこれを行うにはどうすればよいですか?データテーブルでMergeステートメントを試しましたが、これはvoidを返します。マージはデータを保持しますか?たとえば、私がそうする場合:

 dtOne.Merge(dtTwo);

dtOneは変更されますか、それともdtTwoは変更されますか?どちらかが変更された場合、変更は保持されますか?

Mergeがvoidを返すため、これを実行できないことはわかっていますが、dtOneとdtTwoの両方のMergerをdtAllに格納できるようにしたいと思います。

//Will Not work, How do I do this
dtAll = dtOne.Merge(dtTwo);
4

5 に答える 5

106

このMergeメソッドは 2 番目のテーブルから値を取得し、それらを最初のテーブルにマージするため、最初のテーブルは両方の値を保持します。

元のテーブルの両方を保持したい場合は、最初に元のテーブルをコピーしてからマージできます。

dtAll = dtOne.Copy();
dtAll.Merge(dtTwo);
于 2008-11-12T21:46:24.000 に答える
43

Jeromy Irvine の回答の代わりにdtAll = dtOne.Copy();、空から始めて、1 つずつ繰り返しマージできます。DataTable

dtAll = new DataTable();
...
dtAll.Merge(dtOne);
dtAll.Merge(dtTwo);
dtAll.Merge(dtThree);
...

等々。

この手法は、データ テーブルを繰り返しマージするループで役立ちます。

DataTable dtAllItems = new DataTable();

foreach(var item in items)
{
    DataTable dtItem = getDataTable(item); // some function that returns a data table
    dtAllItems.Merge(dtItem);
}
于 2013-01-18T11:22:04.773 に答える
12
dtAll = dtOne.Copy();
dtAll.Merge(dtTwo,true);

パラメータ TRUE は、変更を保持します。

詳細については、MSDNを参照してください。

于 2009-01-18T01:25:25.867 に答える
1
DataTable dtAll = new DataTable();
DataTable dt= new DataTable();
foreach (int id in lst)
{
    dt.Merge(GetDataTableByID(id)); // Get Data Methode return DataTable
}
dtAll = dt;
于 2011-01-11T15:27:32.320 に答える