【发布时间】:2016-01-28 21:38:43
【问题描述】:
我正在尝试使用 LINQ 构建搜索查询,以利用用户传递的条件将其传递给实体框架。标准是二维的。
条件包括“FieldName”和“SearchOperator”,例如:
FieldName 可能包括“FirstName”、“LastName”、“DateOfBirth”等
SearchOperator 可能包括“Equals”、“BeginsWith”、“EndsWith”、“Greater”、 ...等
如您所见,需要处理的条件太多。实现代码的最佳方式是什么?
我当前的代码看起来像这样,但我觉得应该有更好的方法来做到这一点。
IQueryable<Employee> query = dbContext.Employee;
switch (FieldName)
{
case "FirstName":
switch (SearchOperator)
{
case "Equals":
query = query.Where(x => x.FirstName.Equals(SearchValue));
break;
case "BeginsWith":
query = query.Where(x => x.FirstName.StartsWith(SearchValue));
break;
}
break;
case "LastName":
switch (SearchOperator)
{
case "Equals":
query = query.Where(x => x.LastName.Equals(SearchValue));
break;
case "BeginsWith":
query = query.Where(x => x.LastName.StartsWith(SearchValue));
break;
}
}
【问题讨论】:
标签: c# entity-framework linq