2013-12-20 69 views
0

考慮這兩個類。在LINQ中一個簡單的SQL連接不起作用

class OrderDetail {int Specifier;} 

class Order 
{ 
    OrderDetail[] Details; 
} 

現在我有一個列表我想枚舉,選擇只與1作爲這個說明符的對象很容易在SQL我認爲LINQ與加盟將是很好的,但我不知道如何構建查詢。

from o in orders join o in o.Details on o.Id equals od.Id where od.Specifier = 1 select od 

這給出了一個錯誤,'o'在加入後當前上下文中不存在。 我在這裏做錯了什麼?

回答

1
orders.SelectMany(o => o.Details.Where(od => od.Specifier == 1)) 

在查詢中使用的是相同的序列變量名o的細節,你應該使用join od in o.Details。但是這裏不需要加入,因爲訂單已經包含詳細信息:

from o in orderes 
from od in o.Details 
where od.Specifier == 1 
select od