列挙型を使用して、equalsとCallExpressionを作成します。LINQの式は - >私は<code>CallExpression</code>ようを構築しようとしている
f.Equals(s);
、f
とt
はenum SType
をしています。
ので、
var equalsMethod = typeof(SType).GetMethod("Equals", new[] { typeof(SType) });
ConstantExpression constantExpression = Expression.Constant(value, typeof(SType));
var newBody = Expression.Call(expr.Body, equalsMethod, constantExpression);
return Expression.Lambda<Func<TEntity, bool>>(newBody, expr.Parameters);
私は知らないが、equalsMethod
はBoolean Equals(System.Object)
の代わりBoolean Equals(SType)
です。私はCallExpression
ネット私に指示を構築したいとき
だから、私はこの方法Boolean Equals(System.Object)
の種類System.Object
のパラメータの種類SType
の発現を使用することはできませんよ。
どういうところが間違っていますか?
注 'Expression.Equalこと'は' operator == 'の呼び出しであり、' Equals'の呼び出しではありません。式がコンパイルされている場合、同等であることは保証されませんが、強く推奨されます。式がEntityFramework/LinqToSqlクエリで使用される場合、それらは同じように変換されます。 – Johnbot