2013-10-27 68 views
1

如何在實體框架中表示以下LEFT JOIN左加入或OR條件

SELECT * FROM a 
LEFT JOIN b ON 
(a.UserId = b.Field1 AND b.Field2 = SOME_VARIABLE) 
OR (a.UserId = b.Field2 AND b.Field1 = SOME_VARIABLE) 

AND的I知道我可以使用複雜的匿名類型和EQUALS但我無法弄清楚如何處理OR S'

回答

2
var query = from a in context.aTable 
      select new { 
       A = a, 
       B = (from b in context.bTable 
        where (a.UserId == b.Field1 && b.Field2 == SOME_VARIABLE) || 
          (a.UserId == b.Field2 && b.Field1 == SOME_VARIABLE) 
        select b 
        ).DefaultIfEmpty() 
      } 

根據您的需要,您可以忽略DefaultIfEmpty

+0

在比較A = a和==之後必須有。但即便如此,我得到「一個查詢正文必須以select子句或組子句結束」錯誤的查詢傳遞給DefaultIfEmpty –

+0

@paulsimmons哎呀!更新。 – Alireza