У меня есть следующее отношение (например)
A содержит один или несколько B
Каждый B содержит один или несколько C и D
Я хочу сгладить все с помощью SelectMany вместе с некоторыми условиями поиска и получить A, B, C и D. Это то, что у меня есть.
context.A.Where(a => (string.IsNullOrEmpty(name) || a.Name.Contains(name)))
.SelectMany(ab =>ab.b.Where(n=>n.bname.Contains(name) || string.IsNullOrEmpty(name)),
(aa, bb) => new { aa, bb }) //gets all a's and b's
.SelectMany(bc => bb.c.Where(w => w.KEYWORD.Contains(Keyword) || string.IsNullOrEmpty(Keyword)),
(bc,words) => new {bc,kwords}) //gets all b's and c's
Правильно ли я делаю? Если да, то как получить B вместе со всеми D, добавляющими к приведенному выше выражению?
select
:) Посмотрите документацию SO linq по соединениям - она короткая и хорошая 24.10.2016