使用LINQ使用两个键列加入两个数据表
问题描述:
数据表A:使用LINQ使用两个键列加入两个数据表
Key1 | Key2 | A |乙
[1 1 ...]
[1 2 ...]
数据表B:
密钥1 | Key2 | x | Ÿ
[11 ...]
[1 2]
期望的结果:
键1 | Key2 | A | B | X | ÿ
[1 1 ...]
[1 2 ...]
在最终的结果列A,B,X和Y已被添加到该新数据表。发生这种情况是因为key1和key2在数据表A和B中都是相等的。如果给定条件 - (Key1和Key2是euqal),完全外部连接是可能的吗?
答
var list1 = (from t1 in dataTable1.AsEnumerable()
select new
{
Key1 = t1.Field<int>("Key1"),
Key2 = t1.Field<int>("Key2"),
A = t1.Field<string>("A"),
B = t1.Field<string>("B")
});
var list2 = (from b in dataTable2.AsEnumerable()
select new
{
Key1 = b.Field<int>("Key1"),
Key2 = b.Field<int>("Key2"),
X = b.Field<string>("X"),
Y = b.Field<string>("Y")
});
// Now join the 2 collections and get the result you want.
var result = (from x in list1
join y in list2 on new { x.Key1,x.Key2} equals new { y.Key1,y.Key2 }
select new { A = x.A, X = y.X }).ToList();
假设键1和键2是int
型和A·B,X和Y是string
型。
答
试试这个代码的朋友:
var req = (from A in DatatableA
join B in DatatableB
on A.Key1
equals B.Key1 into DatatableResult
select new
{
Key1 = A.Key1 ,
Key2 = A.Key2 ,
A= A.A ,
x= B.x ,
y= B.y ,
}).ToList();
+0
谢谢。我怎样才能做到这一点与空表?说表A是空的,B和我的问题一样。我如何得到与上述问题相同的结果表? – Iason
你可以把数据放在你的数据表中吗?对不起,我还没有完全遵循 – Shyju
也许一个T-SQL的例子说明你如何在数据库中做到这一点,这将有助于理解问题并阐明答案。 – CodingGorilla
@Shyju我在上面,还没有找到正确格式化的方法。 – Iason