Linq关联两个DataTable合并为一个DataTable
DataSet ds ;
DataTable dt1= ds.Tables[0];
DataTable dt2= ds.Tables[1];
//关联
var res = from m in dt1.AsEnumerable()
from s in dt2.AsEnumerable()
where m.Field<int>("ID") == s.Field<int>("ID")
select new
{
//声明字段=属于哪个表的字段<类型>(字段名)
//字段=数据
Num1= m.Field<int?>("Num"),
Name= m.Field<string>("Name"),
Score = s.Field<decimal>("Score"),
Expand = "拓展数据"//如果需要拓展字段也可声明,数据并不一定是属于DataTable
};
//生成新table
DataTable table = new DataTable();
//表结构
table.Columns.Add("Num1");
table.Columns.Add("Name");
table.Columns.Add("Score");
table.Columns.Add("Expand");
table.Columns.Add("Expand1");
//填充数据
foreach (var obj in res)
{
//填充表对应数据,数据并非一定要是obj中的,也可以自己定义
table.Rows.Add(obj.Num1, obj.Name, obj.Score, obj.Expand,"这是拓展1");
}