linq-select 具有所有条件的行
Posted
技术标签:
【中文标题】linq-select 具有所有条件的行【英文标题】:linq-select rows that have all the conditions 【发布时间】:2021-10-04 15:20:36 【问题描述】:我有一个包含多个下拉列表的搜索表单。 您不需要为搜索操作填写所有下拉列表 其中一些下拉列表可以为空。 但是,如果我将其中一些下拉列表留空,它将不会返回任何结果。 但是,如果所有的下拉列表都被填满,结果将是正确的 这是我在操作方法中使用的代码:
CurrentCourseModels = repository.SelectCourses()
.Where(x =>(( x.EducationGroupID==null || x.EducationGroupID == eID)
&& (x.CourseNameID==null|| x.CourseNameID == nID))).ToList();
在此代码中,如果我同时选择 EducationGroupID 和 CourseNameID,结果将是正确的。 但如果我只搜索 EducationGroupID 将没有结果。 谢谢你的帮助
【问题讨论】:
也许您的意思是检查 eID 和 nID 是否为空,而不是数据库中的值(它永远不应该为空,因为它是键)。(nID == null || x.CourseNameID == nID)
【参考方案1】:
如果您只想在有相关过滤器值时进行过滤,那么您可以通过多个语句组合查询:
CurrentCourseModels = repository.SelectCourses();
if (eID != default)
CurrentCourseModels = CurrentCourseModels.Where(x => x.EducationGroupID == eID);
if (nID != default)
CurrentCourseModels = CurrentCourseModels.Where(x => x.CourseNameID == nID);
按顺序添加Where
子句相当于使用&&
将它们拼接在一起,这样您就可以根据需要添加额外的子句。
【讨论】:
以上是关于linq-select 具有所有条件的行的主要内容,如果未能解决你的问题,请参考以下文章