LINQ:如何在LINQ查询中添加多个变量
本文关键字:LINQ 添加 变量 查询 | 更新日期: 2023-09-27 18:01:39
我有一个名为List的控制器动作,它接受以下参数
int filter, int Field, int Operator, string QueryValue
public enum Filter
{
ActiveEmployee,
OnHoldEmployee,
InactiveEmployee
}
public enum Field
{
Name,
ABRAID,
JobTitle,
LocationCode,
Department
}
public enum Operator
{
Contains,
StartWith,
EndWith,
EqualTo
}
可能的情况下:
Select employee where Name Equals "Value"
Select employee where Name EndWith with "Value"
Select employee where Name StartWith with "Value"
Select employee where JobTitle Contains "Value"
Select employee where Department Equals "Value"
我正在使用LINQ来查询数据库
Employees = from p in DB.Employees
where p.AWCID.Contains(queryvalue)
select p;
但这意味着我必须编写嵌套的切换案例来覆盖所有情况。它有180多行代码来覆盖3个变量,
我不太清楚LINQ语法是否支持多值。
任何想法吗?谢谢。
假设查询只包含一种类型的查询(contains, startswith等),我会尝试这样做:
public IQueryable<Employee> GetEmployees(queryType, value)
{
var Employees = from p in DB.Employees
select p;
// could use a switch statement here as well
if (queryType == "contains")
return Employees.where(e => e.contains(value));
else if...
}
还可以将查询类型设置为enum
这会使查询复杂化。如果使用实体框架,你可以考虑实体SQL,因为你可以动态地将整个查询构建为字符串,这将不那么复杂。或者,LINQ to SQL有动态LINQ,它也支持基于文本的查询…