动态LINQ表达式

雷鬼吉他

我正在尝试实现此方法。如何在Linq where子句中指定动态字段名称?并得到一个编译器错误,指出:

无法解析方法'Where(System.Linq.Expressions.LambdaExpression

public class Employee
{
    public string Name { get; private set; }
    public int Salary { get; private set; }

    public Employee(string name, int salary)
    {
        Name = name;
        Salary = salary;
    }
}

然后在控制台应用程序的主要方法中

var employees = new List<Employee>
{
    new Employee("Bob", 45000),
    new Employee("Jane", 25000),
    new Employee("Jim", 5)
};

var eParam = Expression.Parameter(typeof(Employee), "e");

var comparison = Expression.Lambda(
    Expression.LessThan(
        Expression.Property(eParam, "Salary"),
        Expression.Constant(40000)),
    eParam);
var c = from e in employees.Where(comparison) // COMPILER ERROR HERE!!!
    select new {e.Name, e.Salary};

我正在使用System.LinqSystem.Linq.Expressions我在这里做错了什么?

编辑:

答案是强烈键入比较变量,然后像这样调用Compile

var comparison = Expression.Lambda<Func<Employee, bool>>(
    Expression.GreaterThan(
        Expression.Property(eParam, "Salary"),
        Expression.Constant(40000)),
    eParam).Compile();

查询也可以用方法语法编写,例如

var b = employees.Where(comparison);

而不是调用的.Compile(),可调用.AsQueryable().Where()员工也。

马辛·侏罗纪
  1. 您的表达式必须使用强类型:

    var comparison = Expression.Lambda<Func<Employee, bool>>(... 
    
  2. 来源必须是IQueryable致电AsQueryable()清单之前,先致电清单。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

LINQ动态分配表达式

来自分类Dev

动态LINQ查询表达式树

来自分类Dev

为动态对象创建linq表达式树

来自分类Dev

LINQ表达式-动态的From和Where子句

来自分类Dev

.NET Core中的动态Linq表达式

来自分类Dev

如何动态创建以下LINQ表达式?

来自分类Dev

LINQ表达式-动态的From和Where子句

来自分类Dev

无法将此linq转换为动态表达式树

来自分类Dev

使用动态Linq Select表达式的构造函数调用

来自分类Dev

使用表达式树的LINQ动态查询

来自分类Dev

动态表达式 LINQ Select - SelectMany from 嵌套集合

来自分类Dev

EF Linq- 动态 Lambda 表达式树

来自分类Dev

简化LINQ表达式

来自分类Dev

LINQ表达式包含

来自分类Dev

LINQ的组合表达式

来自分类Dev

LINQ的组合表达式

来自分类Dev

正确的 LINQ 表达式

来自分类Dev

jQuery正则表达式动态表达式

来自分类Dev

具有linq表达式的表达式树

来自分类Dev

表达式不能包含lambda表达式Linq

来自分类Dev

为过滤器的多个条件创建动态linq表达式OData包含吗?

来自分类Dev

使用实体框架的SQL IN子句的动态linq查询表达式树

来自分类Dev

在内部使用FirstOrDefault为Select创建动态LINQ表达式

来自分类Dev

寻找构建Linq动态/条件表达式的简单方法

来自分类Dev

在LINQ表达式中动态创建从抽象基类继承的对象

来自分类Dev

使用String.IsNullOrEmpty(string)和Nhibernate创建动态Linq表达式

来自分类Dev

将动态匿名对象添加到linq groupBy表达式中

来自分类Dev

如何使用括号动态创建“ System.Linq.Expression”表达式

来自分类Dev

使用接口获取列名时如何使用表达式动态构建LINQ查询?