Linq加入内部系列

时间:2010-03-23 06:19:55

标签: linq join linq-to-objects

我正在尝试对2个集合进行LINQ to Object查询

  1. Customer.Orders
  2. Branches.Pending.Orders(集合中的集合)
  3. 我想输出尚未提供客户订单的每个分支。

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

    这不起作用,我得到:     join子句中某个表达式的类型不正确。调用'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'
    

1 个答案:

答案 0 :(得分: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;