自定义linq扩展方法中的BinaryExpression类型抛出异常

时间:2012-05-02 09:34:30

标签: c# linq expression

很难在主题中总结这个错误,所以请原谅主题的不良措辞。

我正在编写一个自定义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方法)之外我真的想不出任何其他东西,但我不认为这是正确的。< / p>

任何想法如何解决这个问题?

0 个答案:

没有答案