Разбор деревьев выражения с логическими значениями - PullRequest
1 голос
/ 04 мая 2010

Я пытаюсь разобрать дерево выражений для поставщика linq и столкнулся с небольшой ошибкой с логическими значениями.

Я могу разобрать это без проблем.

var p = products.Where(x=>x.IsAvailable == true).ToList();

однако, когда это написано так?

var p = products.Where(x=>x.IsAvailable).ToList();

Я только получаю доступ к MemberAccess и не могу понять, как я могу определить, является ли он истинным или ложным (! X.IsAvailable). Любая помощь будет отличной.

Спасибо.

1 Ответ

1 голос
/ 04 мая 2010

Надеюсь, это поможет,

У первого есть дерево выражений, как показано ниже.

RETURN ( Binary Expression (MemberAccess, Constant) )

Второй имеет дерево выражений, как показано ниже.

RETURN ( MemberAccess )

Поскольку member имеет тип boolean, его значение определяет состояние выполнения.

...