Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何通过变量&x27;访问LINQ;s值(没有LINQ到实体使用的反射)_C#_.net_Entity Framework_Linq_Dynamic - Fatal编程技术网

C# 如何通过变量&x27;访问LINQ;s值(没有LINQ到实体使用的反射)

C# 如何通过变量&x27;访问LINQ;s值(没有LINQ到实体使用的反射),c#,.net,entity-framework,linq,dynamic,C#,.net,Entity Framework,Linq,Dynamic,有没有一种方法可以使用variables值动态访问LINQ属性,而无需在vanilla C#中进行反射?我相信有一些库可以在这方面提供帮助(例如),但如果可能的话,我希望避免依赖性。在pseudo中,功能如下: var temp = "PropertyName"; context.Table.Where(a => a.GetProperty(temp) > 5); 我最初尝试了一种解决方案,比如使用反射,当我使用常规LINQ测试它时,反射效果非常好。然而,它不适用于LINQtoEn

有没有一种方法可以使用variables值动态访问LINQ属性,而无需在vanilla C#中进行反射?我相信有一些库可以在这方面提供帮助(例如),但如果可能的话,我希望避免依赖性。在pseudo中,功能如下:

var temp = "PropertyName";
context.Table.Where(a => a.GetProperty(temp) > 5);
我最初尝试了一种解决方案,比如使用反射,当我使用常规LINQ测试它时,反射效果非常好。然而,它不适用于LINQtoEntity对象,因为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;
}

如果您不想使用
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;
}

您应该使用
Expression
classes然后使用system.Linq.Dynamic可能是您最好的选择,除此之外,自定义SQL。请参阅:System.Linq.Dynamic是我最后使用的,您应该使用
表达式
类然后System.Linq.Dynamic可能是您最好的选择,除此之外,自定义SQL。看:System.Linq.Dynamic是我最后使用的,实际上我也会动态地获得名称,哈哈,但这会起作用,所以我正在标记它。我最终选择了System.Linq.Dynamic。事实上,我也会动态获取名称,哈哈,但这会起作用,所以我正在标记它。我最终选择了System.Linq.Dynamic。