[英]Linq query for dynamically value
我有一个IQueryable
的Employee
对象集合,其中包含FirstName
、 LastName
、 Department
。 我正在传递以逗号分隔的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.