件名のこの誤りを要約するのはちょっと難しいので、件名の言葉遣いが悪いことをお許しください。
カスタム linq プロバイダーを作成していますが、次の 1 つの方法に固執しています。
public static class CustomLinqMethods
{
public static IQueryable<T> Where<T>(this IQueryable<T> source, BinaryExpression exp)
{
var methodInfo = ((MethodInfo)MethodBase.GetCurrentMethod()).MakeGenericMethod(typeof(T));
return source.SearchProvider.CreateSearch<T>(Expression.Call(null, methodInfo, source.Expression, exp));
}
}
他にもいくつか正常に動作するメソッドがありますが、このメソッドは ArgumentException をスローします。
「型 'System.Boolean' の式は、メソッドの型 'System.Linq.Expressions.BinaryExpression' のパラメーターには使用できません」
BinaryExpression の型が System.Boolean であるため、BinaryExpression が間違った型であるというエラーが表示されていることは理解していますが、ここから正確に何をすればよいかわかりません。何かを試したと言えたらいいのですが、 BinaryExpression をラムダに渡す以外に何も考えられません (組み込みの Where メソッドを使用すると思います)が、これは正しいとは思いません。
これを解決する方法はありますか?