我有2个表,每个表都有相同的字段,基本上包含
table1.ItemCode table1.Qty
table2.ItemCode table2.Qty
我通过以下命令从sql查询这两个表
SELECT c.Code ,
t1.Code ,
t1.Qty ,
t2.Code ,
t2.Qty
FROM ( SELECT Code
FROM dbo.Table1
UNION
SELECT Code
FROM dbo.Table2
) c
LEFT OUTER JOIN dbo.Table1 t1 ON c.Code = t1.Code
LEFT OUTER JOIN dbo.Table2 t2 ON c.Code = t2.Code
WHERE t1.Code IS NULL
OR t2.Code IS NULL
OR t1.Qty <> t2.Qty
此查询为我提供了两个表中都存在的项目代码
只有不同的数量
例如,如果item:x有qty 2,而在第二个表中,item x有qty 4 此项目将显示为:x 2 4
但是如果Item x有qty 2而在第二个表中也有相同的数量 此项目不会出现在结果中
问题是在我的情况下这两个表是我的asp.net中的两个数据表
项目
我需要在这两个数据表上执行相同的查询
如何做到这一点,或者是他们的任何其他可能的解决方案来从这两个
获得我的结果数据表
答案 0 :(得分:0)
这非常简单。
DataTable table1;
DataTable table2;
//Initialize your DataTables here
var result = (from row1 in table1.AsEnumerable()
join row2 in dataTable2.AsEnumerable() on row1["Code"] equals row2["Code"]
where !object.Equals(row1["Qty"], row2["Qty"])
select new { Code = row1["Code"], table1Qty = row1["Qty"], table2Qty = row2["Qty"] })
.ToArray();
两个表中的行连接在Code上。
join row2 in dataTable2.AsEnumerable() on row1["Code"]
随后,过滤具有相同Qty值的行
where !object.Equals(row1["Qty"], row2["Qty"])