我正在尝试使用 Entity Framework 在我的 linq 查询中复制 MS Access“IIf”语句。
如果 Journal.Frequency = "Ad hoc"和 Journal.AdHocRecoMonth <> "provided recomonth"然后在列表中包含期刊。
这是整个查询:
SELECT DISTINCT Users.ID as UserID, Users.FirstName, Users.Surname,User.ADID
FROM Users INNER JOIN Journals ON Users.ID = Journals.UserID
WHERE(((Journals.CompanyID) = {1}) AND((Journals.RRDD) = '{2}') AND
((IIf([Journals].[Frequency] = 'Ad hoc' And [Journals].[AdHocRecoMonth] <> '{0}', 'NO', 'YES')) = 'YES'));
到目前为止,我的代码不包含 if 语句:
var fUsers = (from u in db.Users from j in u.Journals
where j.CompanyID == companyID
where j.RRDD == RRDD
select u).Distinct();
最佳答案
我认为您的 sql 查询的翻译可能是:
var query=(from u in db.Users
from j in u.Journals
where j.CompanyID==p1 && j.RRDD==p2 && !(j.Frequency == "Ad hoc" && j.AdHocRecoMonth != p3)
select u).Disctinct();
p1
,p2
,p3
为参数
另一种方式:
var query=db.Users.Where(u=> u.Journals.Any(j=>j.CompanyID==p1
&& j.RRDD==p2
&& !(j.Frequency == "Ad hoc" && j.AdHocRecoMonth != p3)));
关于c# - linq查询中的条件语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41226860/