Как написать запрос с условием комбинации И / ИЛИ в пункте Где? - PullRequest
1 голос
/ 19 марта 2011
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)

Он не распознает ИЛИ, я хочу, чтобы он всегда возвращал JobId == 0.

Я пробовал прописные буквы, также пробовал скобки, где ((u.UserName == User.Identity.Name) OR (jL.JobId==0))

Без ИЛИ, он работает нормально, это ошибка компилятора синтаксиса.

Как написать запрос var с условием комбинации И / ИЛИ в предложении Where?

Ответы [ 4 ]

3 голосов
/ 19 марта 2011

Поскольку это C #, вам нужно использовать синтаксис C # для OR, то есть || (Оператор условного ИЛИ) :

 (u.UserName == User.Identity.Name || jL.JobId == 0)
2 голосов
/ 19 марта 2011

вы хотите использовать операторы c #

  • && для и
  • ||за или

например.

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)
0 голосов
/ 19 марта 2011

Вам нужно использовать || вместо или.

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

Я не уверен, как вы получите jobId, хотя, похоже, вы хотите сделать левое соединение. Если пользователь не существует в таблице jobLists, он будет нулевым для jL.jobId и не будет ничего возвращать.

См. на этой странице , чтобы узнать больше о левых соединениях

0 голосов
/ 19 марта 2011

Используйте обычные операторы И (& / &&) и ИЛИ (| / ||) языка C #.

...