如何在Where子句中编写具有组合条件AND / OR的查询?

时间:2011-03-19 01:32:06

标签: c# asp.net lambda where-clause

var query = from uM in db.aspnet_Memberships
                    join uD in db.UserDetails
                    on uM.UserId equals uD.UserId
                    join jL in db.JobLists
                    on uM.UserId equals jL.UserId
                    where (u.UserName == User.Identity.Name or jL.JobId==0)

它无法识别OR,我希望它始终返回JobId == 0。

我尝试过大写,也试过了((u.UserName == User.Identity.Name) OR (jL.JobId==0))

中的parentheis

没有OR,它工作正常,这是一个语法编译器错误。

如何在Where子句中使用组合条件AND / OR编写var查询?

4 个答案:

答案 0 :(得分:3)

由于这是C#,您需要使用C#语法进行OR,即|| (The Conditional OR operator)

 (u.UserName == User.Identity.Name || jL.JobId == 0)

答案 1 :(得分:2)

您想使用c#运算符

  • &安培;&安培; for和
  • || for或

例如

var query = from uM in db.aspnet_Memberships
            join uD in db.UserDetails
            on uM.UserId equals uD.UserId
            join jL in db.JobLists
            on uM.UserId equals jL.UserId
            where (u.UserName == User.Identity.Name || jL.JobId==0)

答案 2 :(得分:0)

使用C#语言的普通AND(& / &&)和OR(| / ||)运算符。

答案 3 :(得分:0)

你需要使用||而不是或。

((u.UserName == User.Identity.Name)||(jL.JobId == 0))

我不知道你怎么会得到一份工作但是因为看起来你想要做一个左连接。如果jobLists表中不存在该用户,则jL.jobId将为null,并且不返回任何内容。

有关左连接的详情,请参阅this page