Подтвердить что ты не робот

Как запросить вложенный список, используя выражение лямбда

В моей реализации репозитория я могу выполнить следующий запрос, используя выражение лямбда:

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, используя выражение лямбда, похожее на пример выше?

4b9b3361

Ответ 1

Это может работать (не проверено)...

var clubs = ClubRepository.Where(c=>c.MemberShips.Any(m=>m.User.Age > 45));

Ответ 2

Вот один из способов сделать это:

var clubs = clubRepository
    .SelectMany(c => c.Memberships, (c, m) => new { c, m })
    .Where(x => x.m.User.Age > 45)
    .Select(x => x.c);