2010-03-05 142 views
0

我想要在我的where語句中使用訂單ID的集合我怎麼得不到這個工作?C#LINQ加入並在哪裏聲明不工作

List<int> orders = new List<int>(){1,2,3,4,5}; 

DataTable dtTable1 = getOrders(); 
DataTable dtTable2 = getOrderDetails(); 
var results = from a in dtTable1.AsEnumerable() 
       join b in dtTable2.AsEnumerable() on a.Field<int>("ID") equals b.Field<int>("ID") 
       where orders.Contains(b.Field<int>("OrderID")) 
       select a; 
+1

不要說「它不起作用」。問題是什麼?它不編譯?它給運行時錯誤?它不會產生預期的結果(在這種情況下,有什麼區別)? – Aaronaught 2010-03-05 22:08:42

回答

2

大膽猜測:

on a.Field<int>("ID") equals b.Field<int>("OrderID") 
+0

不通知我使用Int數組來比較表b中的字段。 where orders.Contains(b.Field (「OrderID」)) – BlackTea 2010-03-05 21:45:42

0

的語法對我來說很好。而且,由於它們是價值類型,我預計這些比較工作得很好。你確定你有爲你的特定數據選擇正確的列嗎?也許你可以告訴我們你桌子上的價值和你期待看到的。