一个A表 Datatable有6个字段
a b c d e f 列
1 2 3 4 5 6
2 3 3 4 5 6
3 4 3 4 5 6
4 5 3 4 5 6
5 6 3 4 5 6B表
有4个字段
a b c d
1 2 3 4
2 3 3 4
A表是导入的,放在内存中的,B表是从数据库查出来的
我想求出 A表和B表 a , b,c,d相同取交集。
即要要取得数据,产生以A表为参照的数据,
1 2 3 4 5 6
2 3 3 4 5 6
求最简洁的写法。自己写了个 循环感觉太挫了,学习高人写法.
a b c d e f 列
1 2 3 4 5 6
2 3 3 4 5 6
3 4 3 4 5 6
4 5 3 4 5 6
5 6 3 4 5 6B表
有4个字段
a b c d
1 2 3 4
2 3 3 4
A表是导入的,放在内存中的,B表是从数据库查出来的
我想求出 A表和B表 a , b,c,d相同取交集。
即要要取得数据,产生以A表为参照的数据,
1 2 3 4 5 6
2 3 3 4 5 6
求最简洁的写法。自己写了个 循环感觉太挫了,学习高人写法.
额 感觉
循环b表,然后通过 a表.select 找出交集数据,
tab1.Columns.Add("ID");
tab1.Columns.Add("Name");
tab1.Columns.Add("Description");
tab1.Rows.Add("1", "2", "3");
tab1.Rows.Add("2", "3", "3");
tab1.Rows.Add("3", "4", "3");
tab1.Rows.Add("4", "5", "3");
System.Data.DataTable tab2 = new System.Data.DataTable();
tab2.Columns.Add("ID");
tab2.Columns.Add("Name");
tab2.Columns.Add("OtherInfo");
tab2.Rows.Add("1", "2", "3");
tab2.Rows.Add("2", "3", "3");
tab2.Rows.Add("6", "4", "3");
tab2.Rows.Add("8", "5", "3"); List<DataRow> selectedRows = (from r1 in tab1.AsEnumerable()
join r2 in tab2.AsEnumerable()
on new { ID = r1.Field<string>("ID"), Name = r1.Field<string>("Name") }
equals new { ID = r2.Field<string>("ID"), Name = r2.Field<string>("Name") }
select r1).ToList<DataRow>();