1

基本的に同じフィールドを含む2つのテーブルがあります

table1.ItemCode table1.Qty

table2.ItemCode table2.数量

次のコマンドでSQLからこれら2つのテーブルを照会しています

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 で、2 番目のテーブルのアイテム x の数量が 4 の場合、このアイテムは次のように表示されます: x 2 4

ただし、アイテム x の数量が 2 で、2 番目のテーブルでも同じ数量の場合、このアイテムは結果に表示されません。

問題は、私の状況では、これらの 2 つのテーブルがasp.net の2 つのデータ テーブルであることです。

事業

同じクエリを実行する必要がありますが、これら 2 つのデータ テーブルに対して

どのようにそれを行うことができますか、またはこれら2から私の結果を得るために他の可能な解決策はありますか

データ テーブル

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();

2 つのテーブルの行がコードで結合されます。

join row2 in dataTable2.AsEnumerable() on row1["Code"] 

その後、同じ Qty 値を持つ行がフィルタリングされます

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