有点难以总结这个主题中的错误,所以请原谅这个主题的糟糕措辞。
我正在编写一个自定义 linq 提供程序,但我坚持使用一种方法:
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 传递给 lambda (我想这将使用内置的 Where 方法)之外,我真的想不出其他任何东西,但我认为这是不正确的。
任何想法如何解决这个问题?