我正在根据https://msdn.microsoft.com/en-us/library/bb546158.aspx
上的非常有用的文章开发一个自定义linq提供程序但是,当涉及到'Not'运算符时,我会陷入困境。例如,我正在使用条件!a.Name.Equals("2 Test")
进行测试。这转换为lambda表达式{Not(a.Name.Equals("2 Test"))}
。
当我调用ExpressionVisitor.Visit(expression)
时,在此表达式上调用我的VisitMethodCall
覆盖。但是,该调用收到的MethodCallExpression
参数缺少表达式的Not部分,即:{a.Name.Equals("2 Test")}
。
没有调用其他覆盖(我已经覆盖了所有可用的覆盖)。这似乎使得无法处理表达式的Not
部分 - 但是我确信不会出现这种情况!
任何人都可以为我阐明这一点吗? AHA,Ben:)