2016-05-24 34 views
0

2つのデータテーブルdt1とdt2があり、どちらも共通の列を共有しています。共通列をマップし、データ付きの新しい列をデータ表dt1に追加する方法。 select文をDT2ため、同様別のデータテーブルからデータテーブルに列を追加する方法

DataTable dt1=new DataTable(); 
DataTable dt2=new DataTable(); 

sqlDataAdapter da1=new sqlDataAdapter("select col1,col2,col3,col4 from table",connection); 
dataset ds1=new dataset(); 
da1.fill(ds); 
dt1=ds.tables[0]; 

残りDT1と同じである "sometableからsomecolは、COL1を選択" です。

出力されたDT1の​​ため

:と私は以下のようにしようとしたDT2

col1 col2 col3 col4    col1 somecol 
1  2  3 4    1  true 
2  5  6 ...    2  false.. 

用出力:

col1 col2 col3 col4 somecol 
1  2 3 4  true 
2  5 6 7  false... 

datatable dtTotal=new datatable(); 
dtTotal=dt1.clone(); 
foreach(datacolumn col in dt2.columns) 
{ 
if(col.columnname=="somecol") 
{ 
dtTotal.columns.add("somecol"); 
dtTotal.columns["somecol"].Datatype=col.Datatype; 
} 
} 
foreach(datarow dr in dt1.rows) 
{ 
dtTotal.importrows(dr); 
} 
//here a column is added but i don't understand how to import data into that column 

私は以下のようなoutpuを持つようにしたいですdt2データはより複雑な計算から来ているため、データ自体を選択している間は単純な結合を書くことはできません。だから私はdatatableレベルでのみそれを行う必要があります。

dt1の行数がdt2の行数と一致しない場合、dt2にデフォルト値falseの新しい行を追加する必要があります。

答えて

0

DataTable.Mergeメソッドを使用できます。コマンドdt1.Merge(dt2)は、dt1に追加の列と追加のデータレコードをdt2から追加します。 dt2のデータは、同じプライマリキー値と同じ列名を共有するdt1のデータを上書きします。

DataTable dt1 = new DataTable(); 
DataTable dt2 = new DataTable(); 

// Fill the data tables 
... 

// Set the default value for boolean column 
dt2.Columns[4].DefaultValue = false; 

// Set the primary keys 
dt1.PrimaryKey = new DataColumn[] { dt1.Columns[0] }; // Use the appropriate column index 
dt2.PrimaryKey = new DataColumn[] { dt2.Columns[0] }; // Use the appropriate column index 

// Merge the two data tables in dt1 
dt1.Merge(dt2); 
関連する問題