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所示。这两种方法都可以