【发布时间】:2018-02-21 08:33:11
【问题描述】:
我正在使用 LINQ 从数据库中检索记录。一切正常,除了我需要在单个查询中应用不同的过滤器。如果参数不是Null 大于零,则显示所有员工记录。否则,如果它们是 Null 或小于零,则不要应用过滤器。以下是我目前的做法:
public ActionResult GetEmployee(int? JobTitleId, int? GenderId)
{
var Emloyees = db.Employees.ToList();
if(JobTitleId > 0)
{
Emloyees = Emloyees.Where(e => e.JobTitleId == JobTitleId).ToList();
}
if(GenderId> 0)
{
Emloyees = Emloyees.Where(e => e.GenderId == GenderId).ToList();
}
}
有没有办法将此应用于单个查询?我想做如果JobTitleId 和GenderId 是Null 然后显示其他记录,否则,过滤它们。
【问题讨论】:
-
使用
if(JobTitleId.HasValue)等会更好,因为它可以为空,但你做的是正确的方法 -
如果您的查询会更复杂,这个链接可以帮助你Build Where Clause Dynamically in Linq
-
请注意,您还应该删除查询中的
.ToList()(如果您确实想将其设为List<T>,请在所有查询之后执行此操作)
标签: c# .net asp.net-mvc entity-framework linq