Я строю политику авторизации, которая проверяет различные сущности с различными свойствами на уровне записи в огромной таблице базы данных (так что простой 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);
, чтобы получить желаемый результат.
Вопрос в том, какполучить выражение «валидатор», объединяющее предопределенный селектор свойств и список целых чисел, если это возможно, без отражения или с возможностью его кэширования (в случае изменения содержимого списка целых чисел это должно отражать это).