C# linq查询中的条件语句
我正在尝试使用实体框架复制linq查询中的MS Access“IIf”语句 如果Journal.Frequency=“Ad hoc”和Journal.AdHocRecoMonth“提供重新月刊”,则将日记账包括在列表中 以下是整个查询:C# linq查询中的条件语句,c#,linq,C#,Linq,我正在尝试使用实体框架复制linq查询中的MS Access“IIf”语句 如果Journal.Frequency=“Ad hoc”和Journal.AdHocRecoMonth“提供重新月刊”,则将日记账包括在列表中 以下是整个查询: SELECT DISTINCT Users.ID as UserID, Users.FirstName, Users.Surname,User.ADID FROM Users INNER JOIN Journals ON Users.ID = Journals
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'));
这行吗?我不确定,因为我不能测试它。将此项添加到其他
的下方,其中
s:
where ((j.Frequency == "Ad hoc" && j.AdHocRecoMonth <> "provided recomonth" ? "NO" : "YES") == "YES")
其中((j.Frequency==“Ad hoc”和&j.AdHocRecoMonth“provided recomonth”?“NO”:“YES”)==“YES”)
这是一个与您的IIF
语句基本相同的示例
注意:我不确定搜索词的大小写是否重要,但这应该是你知道的。例如,如果j.Frequency
等于“ad hoc”
(全部小写)
它将是这样的。我认为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)));
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();
var query=db.Users.Where(u=> u.Journals.Any(j=>j.CompanyID==p1
&& j.RRDD==p2
&& !(j.Frequency == "Ad hoc" && j.AdHocRecoMonth != p3)));