相关疑难解决方法(0)

Expression.Lambda:变量'''类型''引用范围'',但它没有定义

我看到了连接主题但是......

我试图实现规范模式.如果我使用System.Linq.ExpressionsAPI 显式创建Or或And Expression ,我将收到错误

从作用域引用的InvalidOperationExpression变量'x'.

例如,这是我的代码

public class Employee
{
    public int Id { get; set; }
}

Expression<Func<Employee, bool>> firstCondition = x => x.Id.Equals(2);
Expression<Func<Employee, bool>> secondCondition = x => x.Id > 4;


Expression predicateBody = Expression.OrElse(firstCondition.Body, secondCondition.Body);
Expression<Func<Employee, bool>> expr = 
    Expression.Lambda<Func<Employee, bool>>(predicateBody, secondCondition.Parameters);
Console.WriteLine(session.Where(expr).Count()); - //I got error here
Run Code Online (Sandbox Code Playgroud)

EDITED

我尝试使用Linq到Nhibernate的规范模式,所以在我的工作代码中它看起来像:

ISpecification<Employee> specification = new AnonymousSpecification<Employee>(x => x.Id.Equals(2)).Or(new AnonymousSpecification<Employee>(x => x.Id > 4));
var results = session.Where(specification.is_satisfied_by());
Run Code Online (Sandbox Code Playgroud)

所以我想使用像x => x.Id> …

c# lambda

4
推荐指数
1
解决办法
5692
查看次数

标签 统计

c# ×1

lambda ×1