在linq中使用“AND”运算符

时间:2011-12-06 15:43:42

标签: sql linq lambda expression

我正试图做一个像这样的表达式:

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可以为null。

我试过“和”,“&&”,但没有成功。

一些帮助?

3 个答案:

答案 0 :(得分:3)

您需要将其编写为使用 等于 运算符,该运算符只能在 on 之后使用一次

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()

答案 1 :(得分:2)

您需要在联接中使用匿名类型来指定联接中的多个字段。

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

答案 2 :(得分: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()