Получите доступ к параметру родительского выражения в дереве выражений.
Я работаю с Entity Framework, и мне нужно динамически создавать фильтры во время выполнения.
Мне нужно создать выражение, которое должно иметь возможность доступа к параметру родительского вызова, например:
х =&ГТ; х.Роли.Выберите(y => y.действия.Где(з =&ГТ; !х.Метод isactive || з.Метод isactive))
так что этот фильтр должен выбрать _все_ действия для корневого объекта, если это корневой объект-это _не_ активный, или выбрать все действия _active_, если объект является активным.
У меня есть код, который создает выражение такого рода, но не ясно, как получить доступ к параметру x из фильтра Where.
Поскольку фильтр Where представлен отдельным выражением, которое принимает только параметр z, он не имеет привязки X.
Что нужно сделать, чтобы этот параметр был доступен на этом уровне ?
Спасибо,
Алекс
Что я уже пробовал:
Я не могу привести здесь пример кода, потому что он не прост, так как динамически вычисляет типы объектов, преобразованных в выражения.
Он просто основан на регулярном подходе, но работает через рефлексию.
Nathan Minier
Я думаю, что у вас есть более фундаментальная проблема, если ваш дизайн позволяет контейнеру ролей предоставлять "активное" переопределение конкретным действиям. Свойства должны иметь значение; возможно, будет полезно пересмотреть структуру.
Во всяком случае, функциональность, которую вы ищете, лучше обслуживается вложенными циклами, а не деревом выражений.
Alex-1978
Спасибо за ваш комментарий.
Не могли бы Вы уточнить, о каких вложенных циклах идет речь ?
Gerry Schmitz
Насколько я могу судить, "x" находится "в области видимости" (или это то, что говорят мне мои тесты).