繁体   English   中英

我如何通过变量的值访问LINQ(不反映LINQ-to-Entity使用)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM