2013-01-22 52 views
1

我有每個具有基本上含有查詢兩個數據表asp.net

table1.ItemCode table1.Qty

table2.ItemCode table2.Qty

我是相同的字段2層的表通過以下命令從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 

t他查詢爲我提供了存在的兩個表中的項目代碼

只具有不同數量的

例如,如果項:X有2件,並在第二個表項X具有數量4 此項目將顯示爲:x 2 4

但是如果項目x具有數量2,並在第二個表也同樣數量 這個項目不會出現在結果

的PROBL EM的是,在我的情況下,這些2代表在我的asp.net 2個數據表

項目

我需要執行相同的查詢,但在這兩個數據表

怎麼可能做或者是他們的任何其他可能的解決方案,以從這些2

數據表

+0

http://whathaveyoutried.com? –

+0

不是一個答案,但開始將您的DataTables轉換爲IEnumerable (dt.Rows.Cast ();)你應該能夠使用linq查詢。 – jbl

+0

@SteveB我還沒試過,因爲我知道你需要LINQ來查詢數據表,但我對開發很陌生,並且我不熟悉該語言 –

回答

0

這是很straightforwa得到我的結果RD。

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