Где пункт не работает с паратезами

Предположим, следующий запрос с использованием NH 3.4 и RepositoryPattern

var list = _repository
     .QueryOver()
     .Where(x => (x.Age > 20))  // notice the parantheses
     .Future()
     .ToList();

Несмотря на то, что добавлены эти паратезы, NH не работает и вызывает исключение SO.

Если заменить .Where(x => (x.Age > 20)) с .Where(x => x.Age > 20)это работает как ожидалось.

Есть какие-нибудь подсказки, почему это не работает с лишними паратезами?

Заметка

Это упрощенный сценарий из общей картины. В производстве я передаю это .Where(...) через параметр Expression<Func<Person, bool>> where

1 ответ

Решение

У меня есть сомнения, ошибка есть:

Expression<Func<MyClass, bool>> mc1 = x => (x.ID > 20);
Expression<Func<MyClass, bool>> mc2 = x => x.ID > 20;

var body1 = mc1.Body.NodeType; // GreatThan
var body2 = mc2.Body.NodeType; // GreatThan

Скобки удаляются компилятором. В дереве выражений "язык" (система классов) нет ничего, что явно представляло бы скобку.

Другие вопросы по тегам