c# - linq查询中的条件语句

标签 c# linq

我正在尝试使用 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/

相关文章:

c# - 通用存储库,CreateObjectSet<T>() 方法

c# - 如何使用C#和 Entity Framework 实现SQL Server分页?

c# - 根据 .config 文件中的设置选择注入(inject)构造函数

c# - 如何使用 Linq-To-SQL 进行更新?

c# - 使用 LINQ 将对象集合转换为字典

c# - 使用 lambda 聚合匿名类型

c# 引用 a 使用继承自 c 的 b

c# - Module 是 Autofac 的绑定(bind)上下文吗

c# - 为什么 C# 不允许匿名转换为对象?

c# - 将模型导出到数据表