2009-05-13 50 views
30

1つのDataTableを別のDataTableに追加したいと思います。 DataTableクラスには2つのメソッドがあります。 "Load(IDataReader)"および "Merge(DataTable)"があります。ドキュメントから、両方の行が存在する場合、受信データを既存のDataTableと 'マージ'するように見えます。私は、データアクセスレイヤーでマージを行います。1つのDataTableを別のDataTableに追加する方法

私はIDataReaderを使用して、Loadメソッドを使用してDataTablesをマージすることができます。または、IDataReaderを使用してDataSetをロードし、DataSetからDataTableを取得し、Mergeメソッドを使用してDataTablesをマージすることができます。

誰かが適切な使用方法を教えてくれるかどうか疑問に思っていましたか?

また、このタスクを実行する方法について別の提案がある場合はお知らせください。

答えて

40

MergeにはDataTableが必要です.LoadにはIDataReaderが必要です。データレイヤーにアクセスするに応じて、必要なメソッドを使用します。私の理解では、負荷は内部的にMergeを呼び出しますが、それについては100%確実ではありません。

次の2つのDataTable、使用のマージを持っている場合。

14

あなたはDataAdapterに作業をさせることができます。 DataAdapter.Fill(DataTable)は、新しい行をDataTableの既存の行に追加します。

+2

ここで最善の答え –

+1

大丈夫です! – ashubuntu

35

同じ列名のデータ型は、等しくなければなりません。

dataTable1.Merge(dataTable2); 

その後の結果は次のとおりです。

dataTable1 = dataTable1 + dataTable2

+0

あなたの時間を節約してくださいありがとうございました – destinydz

4

必要に応じてのDataTableを含む2つのデータセットが、今それがマージされます追加

DataSet ds1 = new DataSet(); 
DataSet ds2 = new DataSet(); 

DataTable dt1 = new DataTable(); 
dt1.Columns.Add(new DataColumn("Column1", typeof(System.String))); 

DataRow newSelRow1 = dt1.NewRow(); 
newSelRow1["Column1"] = "Select"; 
dt1.Rows.Add(newSelRow1); 

DataTable dt2 = new DataTable(); 
dt2.Columns.Add(new DataColumn("Column1", typeof(System.String))); 

DataRow newSelRow2 = dt1.NewRow(); 
newSelRow2["Column1"] = "DataRow1Data"; // Data 
dt2.Rows.Add(newSelRow2); 

ds1.Tables.Add(dt1); 
ds2.Tables.Add(dt2); 

ds1.Tables[0].Merge(ds2.Tables[0]); 

今DS1がありますマージされたデータ

+0

全く同じ仕事をするための簡単で組み込みの方法がある場合、難しいことはありません。すでにプログラマーとしての巨大な圧力に追いついています:) – ashubuntu

関連する問題