Ash*_* K. 2 .net c# linq asp.net-mvc entity-framework
我正在使用 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();
}
}
Run Code Online (Sandbox Code Playgroud)
有什么方法可以将其应用于单个查询吗?我想做的是JobTitleId如果然后显示其他记录,否则过滤它们。GenderIdNull
您应该将谓词添加到IQueryable,即删除ToList:
var employees = db.Employees.AsQueryable();
if (JobTitleId.GetValueOrDefault() > 0)
{
employees = employees.Where(e => e.JobTitleId == JobTitleId);
}
Run Code Online (Sandbox Code Playgroud)
ETC。
此后,当您调用谓词时employees.ToList(),谓词将被转换为 SQL,您将从数据库中提取的数据会减少。上面的语句仅构建查询,并不执行它。
| 归档时间: |
|
| 查看次数: |
2433 次 |
| 最近记录: |