繁体   English   中英

动态值的 Linq 查询

[英]Linq query for dynamically value

我有一个IQueryableEmployee对象集合,其中包含FirstNameLastNameDepartment 我正在传递以逗号分隔的LastName字符串。 我想使用where子句来过滤LastName选择为"Sharma,Gupta" 有人可以帮我吗?

员工班

public class Employee
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Department { get; set; }
    public string EmpID { get; set; }
}

public IQueryable<Employee> GetEmpData(String filterExpression)
{
    IQueryable<Employee> data = GetEmployeeData();
    data = from da in data
           where (da.LastName == "Sharma")
           select da;
    return data;

}

在上述方法中,我可以查询单个值。 filterExpression包含以逗号分隔的LastName列表。 有人可以指导我如何在where子句中使用filterExpression吗?

拆分您的字符串并使用.Contains

names = filterExpression.Split(",");
IQueryable<Employee> data = GetEmployeeData();
data = from da in data
       where names.Contains(da.LastName)
       select da;

当您返回整个对象并且不使用方法语法仅投影它的一部分时,可能更具可读性:

return GetEmployeeData().Where(item => names.Contains(item.LastName));

如果您的 filterExpression 是一个字符串,名称以逗号分隔,那么您需要更改查询以检查姓氏是否在 filterExpression 中的名称列表中,如下所示:

public IQueryable<Employee> GetEmpData(String filterExpression)
{
    List<string> names = filterExpression.Split(",");
    return GetEmployeeData().Where(names.Contains(da.LastName));
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM