我目前有一个用于访问对象属性的属性访问器的 LINQ 表达式。我现在需要构建一个 LINQ 表达式,该表达式将评估谓词以查看属性访问器的结果是否包含在列表中。
我已经看到,在大多数情况下,这种事情是使用 Expression 上的静态方法完成的,但是没有 Contains 或 In 可用作 Expression 上的静态方法,所以我不确定如何继续。
// 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 的值是否包含在年龄列表中。通常这就像编写一个表达式来查看值列表是否包含我要检查的值,但我看不到如何将表达式的结果作为要搜索的值输入。
为了澄清一点,我试图弄清楚如何获取具有所有 Persons 的可查询对象,并仅获取未知表达式基于另一个表达式的值评估为 true 的 Persons。在我的示例案例中,未知访问器表达式正在查看一个人的年龄,它需要能够评估它是否包含在另一个可接受的年龄列表中。