Ответ 1
Это может работать (не проверено)...
var clubs = ClubRepository.Where(c=>c.MemberShips.Any(m=>m.User.Age > 45));
В моей реализации репозитория я могу выполнить следующий запрос, используя выражение лямбда:
public IList<User> GetUsersFromCountry(string)
{
return _UserRepository.Where(x => x.Country == "Sweden").ToList();
}
Пока все так хорошо, просто. Тем не менее, у меня возникли трудности с написанием лямбда-выражения в вложенном → вложенном списке. Учитывая следующий пример (извините, не мог придумать лучшего):
Следующий запрос работает абсолютно нормально и возвращает все клубы, у которых есть члены старше 45 лет.
public IList<Clubs> GetGoldMembers()
{
var clubs = from c in ClubRepository
from m in c.Memberships
where m.User.Age > 45
select c;
return clubs;
}
В настоящий момент это заканчивается, когда заканчивается мое знание лямбда-выражения.
Как я могу написать вышеуказанный запрос в ClubRepository, используя выражение лямбда, похожее на пример выше?
Это может работать (не проверено)...
var clubs = ClubRepository.Where(c=>c.MemberShips.Any(m=>m.User.Age > 45));
Вот один из способов сделать это:
var clubs = clubRepository
.SelectMany(c => c.Memberships, (c, m) => new { c, m })
.Where(x => x.m.User.Age > 45)
.Select(x => x.c);