【发布时间】:2013-05-20 20:58:53
【问题描述】:
我正在使用动态 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() 不起作用。我只是想知道是否有人这样做过。任何帮助表示赞赏。
【问题讨论】:
-
long不是类型的名称,它是 C# 提供的快捷方式。Int64是技术名称,你试过吗?同样String是字符串类型的名称。 -
是的,它奏效了。虽然我不明白,
string.Compare()有效,尽管string(小写“s”)也是一个快捷方式,不是吗? -
@Guvante 如果您愿意,请继续发表您的评论作为答案,我会接受它,因为您在其他人之前回答。
标签: c# dynamic-linq