Csharp/C#教程:如果可能,将if条件合并到单个LINQ语句中分享


如果可能,将if条件合并到单个LINQ语句中

我目前正在使用ASP.NET MVC和Entity Framework Code First使用存储库模式来显示具有分页的简单用户列表。 我添加了过滤该列表的function,允许最终用户从两个下拉菜单和两个带开始和结束日期的文本框中选择条件。

有没有比下面的代码更好的方法来执行此操作,我必须测试所有可能的参数组合,以便编写适当的LINQ查询:

public IEnumerable GetAllByCondition(int? condition1, int? condition2, DateTime? startDate, DateTime? endDate) { if (condition1.HasValue && startDate.HasValue && endDate.HasValue) { return Database.Set().Where(x => x.Condition1 == condition1.Value && x.Date > startDate.Value && x.Date <= endDate.Value).ToList(); } if (condition1.HasValue && condition2.HasValue) { return Database.Set().Where(x => x.Condition1 == condition1.Value && x.Condition2 == condition2.Value).ToList(); } if (condition1.HasValue) { return Database.Set().Where(x => x.Condition1 == condition1.Value).ToList(); } .... and the list goes on } 

如果我将来再添加一个条件,这很快就会变得臃肿。

使用查询撰写的事实 – 您可以继续调用添加更多条件的位置:

上述就是C#学习教程:如果可能,将if条件合并到单个LINQ语句中分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 var query = Database.Set(); if (condition1.HasValue) { query = query.Where(x => x.Condition1 == condition1.Value); } if (condition2.HasValue) { query = query.Where(x => x.Condition2 == condition2.Value); } ... return query.ToList(); 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1033654.html

(0)
上一篇 2022年1月18日
下一篇 2022年1月18日

精彩推荐