Выражения - объединить предопределенный селектор с List.Contains - PullRequest
0 голосов
/ 16 апреля 2019

Я строю политику авторизации, которая проверяет различные сущности с различными свойствами на уровне записи в огромной таблице базы данных (так что простой Func не вариант).

Моя проблема, что я не могу сделать так, какВыражение newbie выглядит следующим образом:

Давайте создадим простую сущность:

public class Entity1
{
    public int Foo1 { get; set; }
}

У меня есть кэшированный селектор свойств для каждой сущности, для этого он будет:

Expression<Func<Entity1, int>> propertySelector = i => i.Foo1;

С другой стороны есть изменяющийся список целых чисел, мне нужно сравнить значение этого свойства:

List<int> ids = new List<int> { 1, 2, 3 };

После "объединения" этого списка с селектором свойств мне нужно иметь следующее выражение:

Expression<Func<Entity1, bool>> validator = i => ids.Contains(i.Foo1);

Так что в EF на

IQueryable<Entity1> entities = null;

я могу использовать

var result = entities.Where(validator);

, чтобы получить желаемый результат.

Вопрос в том, какполучить выражение «валидатор», объединяющее предопределенный селектор свойств и список целых чисел, если это возможно, без отражения или с возможностью его кэширования (в случае изменения содержимого списка целых чисел это должно отражать это).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...