Asp.net mvc Linq-在查询中使用多个变量
我有以下功能:-Asp.net mvc Linq-在查询中使用多个变量,asp.net-mvc,linq,Asp.net Mvc,Linq,我有以下功能:- public IEnumerable<Employee> getEmployees(string department, string searchterm) { IEnumerable<Employee> query; if (department == null || department == ""){ query = from e in db.Employees wh
public IEnumerable<Employee> getEmployees(string department, string searchterm)
{
IEnumerable<Employee> query;
if (department == null || department == ""){
query = from e in db.Employees where e.Date_Leave == null orderby e.EmpSurname select e;
}else{
query = from e in db.Employees where (e.Date_Leave == null) && (e.EmpDept==department) orderby e.EmpSurname select e;
}
return query;
}
目前,它只是查看'department'变量以确定要运行哪个查询,但我还希望它查看'searchTerm'变量,我将对'EmpNames'列使用该变量
我的问题是,如果“部门”和“搜索术语”不为空,是否可以只使用一个查询,如果它们为空,是否可以忽略它们。也可能是一个为空,另一个为空。
谢谢您可以通过多个步骤组合查询,在实际请求结果之前不会执行查询:
public IEnumerable<Employee> getEmployees(string department, string searchterm)
{
IQueryable<Employee> query = db.Employees.Where(e => e.Data_Leave == null);
if (department != null && department != "") {
query = query.Where(e => e.EmpDept == department);
}
if(searchterm != null && searchterm != "") {
query = query.Where(e => e.EmpSurname == searchterm);
}
return query.OrderBy(e => e.EmpSurname);
}
您可以使用:
var query = from e in db.Employees
where e.Date_Leave == null &&
(department == null || e.EmpDept == department) &&
(searchTerm == null || /* something using searchTerm */)
orderby e.EmpSurname
select e;
或者只是有条件地添加查询,如Marcin所示。这两种方法都可以