2

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

どちらが正しい (InstanceIDは のプロパティEventListItem) ですが、 への呼び出しは次のParseLambda()例外で失敗します。

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

を含む式を解析しようとしましたがstring.Compare()、それはうまく機能しますが、なぜ機能しないのかわかりlong.Parse()ません。誰かがこれをやったことがあるかどうか疑問に思っていました。どんな助けでも大歓迎です。

4

2 に答える 2

2

longは型の名前ではなく、C# が提供するショートカットです。Int64は技術名ですが、試してみましたか? 同様Stringに、文字列型の名前です。

stringC# では大文字と小文字が区別されますが、アナライザーでは大文字と小文字が区別される場合とされない場合があるため、機能している可能性があることに注意してください。

于 2013-05-20T23:59:28.823 に答える