我正在使用动态 Linq 库来解析布尔表达式。在这种方法中:
public static LambdaExpression Parse(SearchQuery query)
{
string compilableExpression = BuildCompilableExpression(query);
ParameterExpression parameter = System.Linq.Expressions.Expression.Parameter(typeof(EventListItem));
return System.Linq.Dynamic.DynamicExpression.ParseLambda(new[] { parameter }, null, compilableExpression);
}
BuildCompilableExpression
返回此字符串:
"long.Parse(InstanceID.ToString()) == long.Parse(\"2\")"
哪个是正确的(InstanceID
是 中的一个属性EventListItem
),但是,调用ParseLambda()
失败并出现以下异常:
No property or field 'long' exists in type 'EventListItem'
我试过解析一个包含string.Compare()
并且工作得很好的表达式,所以我不明白为什么long.Parse()
不起作用。我只是想知道是否有人这样做过。任何帮助表示赞赏。