2013-04-23 112 views
0

如何在Linq中編寫以下內容?在LINQ中用「和」左外連接?

select * from CompetitionDealer d 

left outer join CompetitionResult r 
on d.ID = r.fk_CompetitionDealer and  (r.fk_CompetitionParameter is null 
or r.fk_CompetitionParameter = ID1) 

where fk_Competition = ID2 

問題是在連接上有一個「AND」。 如果我將它移動到結果完全不同的位置,那麼我不能這麼做。

+0

看看這個:http://msdn.microsoft.com/en-us/library/vstudio/bb397895.aspx – Devesh 2013-04-23 07:54:28

回答

0

我解決它通過將其分爲兩個問題:

首先,我選擇了以下列表:

select * from CompetitionResult r 其中r.fk_CompetitionParameter = ID1)

並且比我越過上面的名單加入。

1

也許是這樣的:

var ls= (
     from d in db.CompetitionDealer 
     from r in db.CompetitionResult 
      .Where(a => a.fk_CompetitionDealer == d.ID 
         && (a.fk_CompetitionParameter == null 
         || a.fk_CompetitionParameter == ID1)).DefaultIfEmpty() 
     where d.fk_Competition == ID2 
     select d 
    ); 

其中db是LINQ數據上下文

+0

謝謝你的回答,但是這個語法是無效的。 :-( r在Where無效。 – Keren 2013-04-23 08:33:09

+0

@Keren:我更新了答案。再試一次 – Arion 2013-04-23 10:44:35

+0

對不起。對不起。語法無效。 – Keren 2013-04-23 11:23:42