2010-03-23 56 views
2

我想一个LINQ到2个集的LINQ与内收集

  1. Customer.Orders
  2. Branches.Pending.Orders(集合中的集合)

我对象查询加盟希望输出每个尚未交付客户订单的分行。

var match = from order in customer.Orders 
    join branch in Branches 
    on order equals branch.Pending.Orders 
    select branch; 

这是不行的,我得到: 联接子句中的类型的表达式之一的不正确。在“GroupJoin”调用中,类型推断失败。

从我的搜索,我认为这是因为订单或订单集合不实现等于。

如果此查询起作用,它仍然是错误的,因为如果客户和待处理订单完全匹配,它将返回分支。如果任何订单匹配,我想要一个结果。

我正在学习Linq,并寻找解决此类问题的方法,而不是解决方案本身。

我会这样做SQL这样;

SELECT b.branch_name from Customers c, Branches b, Orders o 
WHERE c.customer_id = o.customer_id 
    AND o.branch_id = b.branch_id 
    AND c.customer_id = 'my customer' 
    AND o.order_status = 'pending' 

回答

0

看你的LINQ的,你想是这样的

var match = 
    from o in customer.Orders 
    from b in Branches 
    where b.Pending.Orders.FirstOrDefault(p => o.order_id == p.order_id) != null 
    select b; 
+0

解决方案1更接近我想要的东西。但我得到 “名称'b'在当前上下文中不存在'\t 在b.Pending.Orders中的连接p”位置 – bronze 2010-03-23 06:51:13

+0

对不起,没有编译器便利的工作 - 试试这个编辑而不是 – pdr 2010-03-23 07:01:19

+0

谢谢,那似乎工作。将更新我的测试用例以确保。 – bronze 2010-03-23 07:20:24