【发布时间】:2014-07-18 19:21:26
【问题描述】:
我有一个库,它使用 ExpressionVisitor 类将 lambda 表达式转换为 odata 过滤器字符串。
例如,表达式o => o.Teste == null && !(o.Date != DateTime.Now) 变成$filter=Teste eq null and not(Date ne xx/xx/xx)
它工作正常。问题是当我必须用括号 () 对部分条件进行分组时。括号被忽略,它只写没有它的条件。
例如,表达式(o => o.Name != null && o.Name == "Joe") || !(o.Date != DateTime.Now) 变成$filter=Name ne null and Name eq 'Joe' or not(Date ne xx/xx/xx)
奇怪的是ExpessionVisitor 似乎没有识别括号,它有一个NodeType,而不是!(expression),但它没有(expression)。
我在 Google 上搜索了两天,但似乎找不到答案。
提前感谢您的帮助。
【问题讨论】:
标签: c# lambda expression expressionvisitor