查询两个数据表asp.net

时间:2013-01-22 14:41:16

标签: asp.net sql linq linq-to-objects

我有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中的两个数据表

项目

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

如何做到这一点,或者是他们的任何其他可能的解决方案来从这两个

获得我的结果

数据表

1 个答案:

答案 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"])