C# linq查询中的条件语句

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

我正在尝试使用实体框架复制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.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)));