DataTable dt1 = new DataTable();
DataColumn dc1 = new DataColumn("NO");
DataColumn dc2 = new DataColumn("Name"); dt1.Columns.Add(dc1);
dt1.Columns.Add(dc2); dt1.PrimaryKey = new DataColumn[]{dc1}; dt1.Rows.Add(new object[] { 1, "A" });
dt1.Rows.Add(new object[] { 2, "B" }); DataTable dt2 = new DataTable();
DataColumn dc21 = new DataColumn("NO");
DataColumn dc211 = new DataColumn("NO1");
DataColumn dc22 = new DataColumn("shuxue"); dt2.Columns.Add(dc21);
dt2.Columns.Add(dc211);
dt2.Columns.Add(dc22);
dt2.PrimaryKey = new DataColumn[] { dc21, dc211 }; dt2.Rows.Add(new object[] { 1,1, 11 });
dt2.Rows.Add(new object[] { 1, 2, 11 });
dt2.Rows.Add(new object[] { 2,1, 22 });象这种第二个表是第一个表的从表的合并有什么简单的方法?用循环太慢了。
基本信息表主键 NO
货物表主键 NO + SEQNO
是一对多的关系
查出两个datatable如果能合成一个
因为基本信息表数据条数少 所以合成时要补充数据
Merge方法报错 空引用用循环需要四层
数据
no name
1 A
2 B货物表
no seqno shuxue
1 1 11
1 2 12
2 1 22合成后的表为
no name seqno shuxue
1 A 1 11
1 A 2 12
2 B 1 22
程序控制的话 你的字段不确定如何来控制
void Main()
{
DataTable dt1 = new DataTable();
DataColumn dc1 = new DataColumn("NO");
DataColumn dc2 = new DataColumn("Name"); dt1.Columns.Add(dc1);
dt1.Columns.Add(dc2); dt1.PrimaryKey = new DataColumn[]{dc1}; dt1.Rows.Add(new object[] { 1, "A" });
dt1.Rows.Add(new object[] { 2, "B" }); DataTable dt2 = new DataTable();
DataColumn dc21 = new DataColumn("NO");
DataColumn dc211 = new DataColumn("seqno");
DataColumn dc22 = new DataColumn("shuxue"); dt2.Columns.Add(dc21);
dt2.Columns.Add(dc211);
dt2.Columns.Add(dc22);
dt2.PrimaryKey = new DataColumn[] { dc21, dc211 }; dt2.Rows.Add(new object[] { 1,1, 11 });
dt2.Rows.Add(new object[] { 1, 2, 11 });
dt2.Rows.Add(new object[] { 2,1, 22 });
var query=from t1 in dt1.AsEnumerable()
join t2 in dt2.AsEnumerable()
on t1.Field<string>("NO") equals t2.Field<string>("NO")
select new
{
NO=t1.Field<string>("NO"),
Name=t1.Field<string>("Name"),
seqno=t2.Field<string>("seqno"),
shuxue=t2.Field<string>("shuxue")
};
DataTable dt3 = new DataTable();
DataColumn c1 = new DataColumn("NO");
DataColumn c2 = new DataColumn("Name");
DataColumn c3 = new DataColumn("seqno");
DataColumn c4 = new DataColumn("shuxue");
dt3.Columns.AddRange(new DataColumn[]{c1,c2,c3,c4});
query.ToList().ForEach(q=>dt3.Rows.Add(q.NO,q.Name,q.seqno,q.shuxue));
}
用户自定查询 还带函数 SQL是拼出来的
查询字段 查询条件
全是自定义
字段虽然不确定但查询的时候可以强加上主键 这样就可以合并了