如果您创建一个包含 Linq 条件的 Filter 对象,该对象通常位于如下的 where 子句中:
var myFilterObject = FilterFactory.GetBlank();
myFilterObject.AddCondition("Salary", "lessThan", "40000");
var myResult = myRepository.GetEmployees(myFilterObject);
在不使用 big case 语句的情况下,如何将 Linq 字段与字段名称匹配?
return from e in db.Employee
where e.Salary < 40000
select new IList<EmployeeViewModel> { Name= e.name, Salary= e.Salary };
我假设您需要将一个对象发送到指定过滤的存储库,以便您只提取所需的记录。我假设 Linq 不会预编译(除非您创建自定义委托和函数),因此您应该能够动态指定要过滤的字段。
如果你能做一些像 e["Salary"] 这样的事情,比如某种类型的 Expando 对象,那就太好了。
您可以手动构建表达式,如下所示:
var eParam = Expression.Parameter(typeof(Employee), "e");
var comparison = Expression.Lambda(
Expression.LessThan(
Expression.Property(eParam, "Salary"),
Expression.Constant(40000)),
eParam);
return from e in db.Employee.Where(comparison)
select new EmployeeViewModel { Name = e.name, Salary = e.Salary };
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)