動的にネストされた述語式に頭を悩ませようとしています。うまくいっていません。
基本的に、固定された一連のプロパティに対して動的クエリを作成できるようにする必要がありますが、動的な (場合によっては無制限の) 数の (ネストされた) レベルに対して作成する必要があります。
家系図を例にとると、クエリを記述して次の結果のいずれかを取得できるはずです。
- 子供を持つすべての親を見つける
- 名前が「k」で始まる子供を持つすべての親を見つける
- 2013 年 1 月 1 日以降に生まれた子供がいて、名前が "John" である子供を持つすべての親を検索します。
- 等
私は手で似たようなものを書くことができますが、それはうまくいきます。
var pred = PredicateBuilder.True<db.Entity>();
pred = pred.And(n =>
n.Children.Where(
m => m.Children.Where(
o => o.Name.Contains("John")
).Any()
).Any()
);
質問は、任意の数のネストされたレベルで混合プロパティと演算子を使用して上記のコードを動的に作成するにはどうすればよいですか?