C#LINQ加入并在哪里声明不工作

C#LINQ加入并在哪里声明不工作

问题描述:

我想要在我的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

大胆猜测:

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

的语法对我来说很好。而且,由于它们是价值类型,我预计这些比较工作得很好。你确定你有为你的特定数据选择正确的列吗?也许你可以告诉我们你桌子上的价值和你期待看到的。