我试图围绕动态嵌套谓词表达式。情况不太好。
基本上我需要能够在一组固定的属性上创建动态查询,但在动态(并且可能无限)数量的(嵌套)级别上。
以家谱为例,我应该能够编写查询来获得以下任何一个结果:
- 找到所有有孩子的父母
- 查找所有有名字以“k”开头的孩子的父母
- 查找所有有孩子的父母,他们的孩子出生于 2013 年 1 月 1 日之后,孩子的名字叫“约翰”
- 等等
我可以手写一些类似的东西,效果很好。
var pred = PredicateBuilder.True<db.Entity>();
pred = pred.And(n =>
n.Children.Where(
m => m.Children.Where(
o => o.Name.Contains("John")
).Any()
).Any()
);
问题是如何在任意数量的嵌套级别上使用混合属性和运算符动态创建上述代码?