[英]How can I access a LINQ by a variable's value (without reflection for LINQ-to-Entity use)
有没有一种方法可以使用变量值动态访问LINQ属性,而无需在原始C#中进行反射? 我相信有一些库可以对此提供帮助(例如System.Linq.Dynamic ),但是我想尽可能避免依赖。 以伪方式,其功能如下:
var temp = "PropertyName";
context.Table.Where(a => a.GetProperty(temp) > 5);
我最初尝试的溶液等这样使用反射,它完美地工作,当我与普通LINQ测试它。 但是,它不适用于LINQ-to-Entity对象,因为EF无法将其编译为SQL。 我也研究了表达式树,但是这似乎并不是仅使用属性访问功能的方法(而且我的一些“ Where”条件将动态生成)。
如果有人对此有任何想法/示例,我将不胜感激!
如果您不想使用Expression
(这可能是正确的方法)并且不想依赖System.Linq.Dynamic
(这是为您完成Expression
),那么您可以去老派学习,因为您大概知道列名:
var query = context.Table.AsQueryable();
switch (temp) {
case "PropertyName1":
query = query.Where(a => a.PropertyName1 > 5);
break;
case "PropertyName2":
query = query.Where(a => a.PropertyName2 > 15);
break;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.