Linq查询大型数据表

时间:2014-01-19 21:00:43

标签: c# linq datatable enumerable

我有2个数据表,我已经创建了一个连接。然后我可以将其复制回新的数据表。这很好,没有问题。但是,如果我有一个具有更多列的数据表,例如30,具有各种数据类型,如何在不指定每个列的情况下将它们全部复制到新数据表,即类似于SQL查询? 感谢。

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);
};

1 个答案:

答案 0 :(得分:0)

首先为表格设置主键。

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

然后,如果您不介意dt更改,您可以将表与代码合并,

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

如果你介意clone dt并做同样的事情。