Linq查询动态值

时间:2017-02-08 20:49:06

标签: c# .net linq

我有一个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列表。有人可以指导我如何在filterExpression条款中使用where吗?

2 个答案:

答案 0 :(得分:2)

拆分字符串并使用.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));

答案 1 :(得分:0)

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

cmd.CommandType = CommandType.StoredProcedure;