2011-12-06 28 views
0

我試圖做一個表達一些這樣的:使用「AND」運算符與LINQ

from a in objcxt.tableA 
join b in objcxt.tableB 
on a.fld1 equals b.fld1 and a.fld2 equals b.fld2 
into b_join from b in b_join.DefaultIfEmpty() 

編輯:b.fld2可以爲空。

我試過「和」,「& &」,但沒有成功。

有幫助嗎?

+0

&&在linq工作 – Dan

+0

不適合我bro ...會發生什麼? – Eduardo

+0

您是否遇到編譯錯誤,或者是否帶回了您不想要的結果? 「&&」或「和」應該同樣適用。請詳細說明。 –

回答

1

你可以嘗試:

from a in objcxt.tableA 
join b in objcxt.tableB 
on 
    new { a.fld1, a.fld2 } 
equals 
    new { b.fld1, b.fld2 } 
into b_join from b in b_join.DefaultIfEmpty() 
+0

我得到了錯誤: 「連接子句中的一個表達式的類型不正確,使用它時調用'GroupJoin'時類型推斷失敗。 – Eduardo

+0

非常感謝朋友,問題是我比較一個int嗎?和int類型。問候 – Eduardo

3

你需要寫它與工作等於運營商,這隻能一旦語句中使用。所以,需要這樣的東西。

from a in objcxt.tableA 
join b in objcxt.tableB 
on new { a.fld1, a.fld2 } equals new { b.fld1, b.fld2 } 
into b_join from b in b_join.DefaultIfEmpty() 
+0

嘿,夥計,感謝您的回答,但是當我嘗試使用它時,出現此錯誤: 「連接子句中某個表達式的類型不正確。類型推斷在調用'GroupJoin'失敗「 – Eduardo

+0

非常感謝朋友,問題是我比較一個int嗎?和int類型。 此致敬禮。 – Eduardo

2

您需要在連接中使用匿名類型來指定連接中的多個字段。

on new {a.fld1, a.fld2} equals new {b.fld1, b.fld2}