动态Linq无法解析long.Parse()

时间:2013-05-20 20:58:54

标签: c# dynamic-linq

我正在使用Dynamic Linq Library来解析布尔表达式。在这种方法中:

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\")"

哪个是正确的(InstanceIDEventListItem中的属性),但是ParseLambda()的调用会因此异常而失败:

No property or field 'long' exists in type 'EventListItem'

我已经尝试解析包含string.Compare()的表达式并且运行正常,所以我不明白为什么long.Parse()不起作用。我只是想知道是否有人这样做过。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:2)

.NET中不存在类型longlong是C#关键字,是.NET类型System.Int64的别名。尝试使用Int64.Parse(...)

答案 1 :(得分:2)

long不是类型的名称,它是C#提供的快捷方式。 Int64是技术名称,你试过吗?类似地,String是字符串类型的名称。

请注意,string可能有效,因为虽然C#区分大小写,但分析器可能是也可能不是。