【问题标题】:Querying Two data tables asp.net查询两个数据表asp.net
【发布时间】:2013-01-22 14:41:15
【问题描述】:

我有 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 有 2 个并且在第二个表中 Item x 有 4 个 该项目将显示为:x 2 4

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

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

项目

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

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

数据表

【问题讨论】:

  • 不是答案,但从将 DataTables 转换为 IEnumerable ( dt.Rows.Cast(); ) 开始,您应该能够使用 linq 进行查询。
  • @SteveB 我没有尝试过,因为我知道您需要 linq 来查询数据表,但我是开发新手,我不熟悉语言
  • 请至少显示一些代码。我们不知道您如何构建表格等...
  • Check this link,可能会有所帮助

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


【解决方案1】:

这很简单。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-10
    • 1970-01-01
    • 1970-01-01
    • 2018-11-18
    • 2018-10-23
    • 1970-01-01
    • 1970-01-01
    • 2018-02-05
    相关资源
    最近更新 更多