1

我有 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

此查询为我提供了两个表中存在的项目代码

只有不同数量的

例如,如果项目:x 有 2 个并且在第二个表中项目 x 有 4 个,则该项目将显示为:x 2 4

但是,如果项目 x 的数量为 2,并且在第二个表中的数量也相同,则该项目将不会出现在结果中

问题是在我的情况下,这两个表是我的 asp.net中的两个数据表

项目

我需要在这两个数据表上执行相同的查询

如何做到这一点,或者他们有任何其他可能的解决方案来从这两个中获得我的结果

数据表

4

1 回答 1

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"] 

随后,过滤具有相同数量值的行

where !object.Equals(row1["Qty"], row2["Qty"])
于 2015-04-04T08:58:19.603 回答