使用System.Linq.Dynamic.DynamicExpression.ParseLambda出错

本文关键字:ParseLambda 出错 DynamicExpression Dynamic System Linq 使用 | 更新日期: 2023-09-27 18:03:39

我得到以下运行时错误试图使用动态表达式来解析一个构造的Lambda语句。

类型为"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

使用System.Linq.Dynamic.DynamicExpression.ParseLambda出错

感谢resharper反编译源代码…

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

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

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

Identity x=>x。仅在提供属性时添加。不确定我想学习这个API:-)但我确实喜欢这个概念…