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()
ません。誰かがこれをやったことがあるかどうか疑問に思っていました。どんな助けでも大歓迎です。