В настоящее время у меня есть выражение LINQ для средства доступа к свойству, которое обращается к свойству объекта. Теперь мне нужно создать выражение LINQ, которое будет оценивать предикат, чтобы увидеть, содержится ли результат метода доступа к свойству в списке.
Я видел, что в большинстве случаев такие вещи выполняются с использованием статических методов в Expression, однако в Expression нет доступных в качестве статических методов Contains или In, поэтому я не уверен, что делать дальше.
// A data object
internal class PersonDAL
{
public int Age ( get; set; }
}
// A business object
public class Person
{
private PersonDAL root { get; set; }
public static Expression<Func<PersonDAL, int>> AgeExpression
{
get
{
return (root) => (root.Age);
}
}
}
Теперь я хочу иметь возможность проверить, содержится ли значение AgeExpression в списке возрастов. Обычно это было бы чем-то вроде написания выражения, чтобы увидеть, содержит ли список значений значение, которое я хочу проверить, но я не вижу, как передать результат выражения в качестве значения для поиска.
Чтобы немного прояснить, я пытаюсь выяснить, как взять запрашиваемый объект, содержащий все лица, и получить только те лица, в которых неизвестное выражение оценивается как истинное на основе значения из другого выражения. В моем примере выражение неизвестного средства доступа смотрит на возраст человека, и ему необходимо иметь возможность оценить, содержится ли оно в другом списке приемлемых возрастов.