2014-01-19 48 views
1

我有一個2個數據表,我創建了一個連接。然後我可以將其複製回新的數據表。這很好,沒有問題。但是,如果我有一個數據表的列數較多,比如說有不同數據類型的30,我怎樣才能將它們全部複製到一個新的數據表中而不用指定每一列,即類似於SQL查詢? 謝謝。大數據表上的Linq查詢

var results = from table1 in dt.AsEnumerable() 
join table2 in names.AsEnumerable() 
on table1.Field<int>("Id") equals table2.Field<int>("Id") 
select new 
{ 
    C1 = table1.Field<int>("Id"), 
    C2 = table1.Field<int>("Col1"), 
    C3 = table1.Field<int>("Col2"), 
    C4 = table2.Field<String>("Name") 
}; 

DataTable sout = dt.Clone(); 

sout.Columns.Add("Name", typeof(string)); 

foreach (var v in results) 
{ 
    sout.Rows.Add(v.C1,v.C2,v.C3,v.C4); 
}; 
+0

您必須指定生成的'DataRow'! –

回答

0

首先設置主鍵爲你的表。

dt.PrimaryKey = new[] {dt.Columns["Id"]}; 
names.PrimaryKey = new[] { names.Columns["Id"] }; 

然後,如果你不介意dt改變你可以用代碼合併表,

dt.Merge(names,false, MissingSchemaAction.AddWithKey); 

如果你不介意clone dt和做同樣的。