System.Linq.Expression.Compile 错误

System.Linq.Expression.Compile error

我在尝试创建动态 lambda 表达式时遇到问题。参数上的东西。有人经历过吗?

此代码需要创建以下 lambda:

{x => x.Core.Where(core => core.Members.Where(members => members.Name.ToUpper().Contains("LOK")).Any()).Any()}

但是在编译方法中出现错误。

错误信息:

Variable 'core' of type 'TesteLambdaParameter.Models.Class2' referenced from scope '', but it is not defined

Predicate = {x => x.Core.Where(core => core.Members.Where(members => members.Name.ToUpper().Contains("LOK")).Any()).Any()}

我的代码:

Func<T, bool> compiled = predicate.Compile(); // <<== Error Here
    // Error message: Variable 'core' of type 'TesteLambdaParameter.Models.Class2' referenced from scope '', but it is not defined

已解决。

方法被递归调用,创建参数和表达式并返回给自己。在此过程中,参数已从内存中删除,因为它们已经被使用过,相信不会有问题。但是它们需要一直保存在内存中,直到编译的时候。在这种情况下,我使用了一个私有变量来存储已经使用的参数,因此编译正确。