2010-03-23 57 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