2

我在尝试使用动态表达式解析构造的 Lambda 语句时遇到以下运行时错误。

System.Linq.Dynamic.dll 中出现“System.Linq.Dynamic.ParseException”类型的异常,但未在用户代码中处理附加信息:“MessageText”类型中不存在属性或字段“t”

 public static void ApplyAttributeRules<T>(this EntityTypeConfiguration<T> entity) where T : BaseObject

// logic that determines the propertyName ....
var propLambda = // this line fails
   System.Linq.Dynamic.DynamicExpression.ParseLambda<T, String>("t=>t." + PropertyName); // 

类型 T 是 MessageText。我正在尝试构建 lambda 表达式

t=>t.PropName

显然我不明白文档http://www.lcs.syr.edu/faculty/fawcett/handouts/CoreTechnologies/CSharp/samples/CSharpSamples/LinqSamples/DynamicQuery/Dynamic%20Expressions.html

谁能解释我应该如何调用 ParseLambda。

4

1 回答 1

2

感谢 resharper 反编译源...

var propLambda = 
System.Linq.Dynamic.DynamicExpression.ParseLambda<T, String>("t=>t." + PropertyName);

我找到了一个可行的选项。

var propLambda = 
System.Linq.Dynamic.DynamicExpression.ParseLambda<T, String>(PropertyName);

The Identity x=>x. is added when only a property is supplied. Not sure I want to learn this API :-) But I do like the concept...

于 2013-03-13T16:29:37.973 回答