如何使用lambda表达式查询嵌套的列表

18 浏览
0 Comments

如何使用lambda表达式查询嵌套的列表

在我的存储库实现中,我可以使用lambda表达式运行以下查询:

public IList GetUsersFromCountry(string)
{
    return _UserRepository.Where(x => x.Country == "Sweden").ToList();                  
}

到目前为止,一切都很好,这是简单的事情。然而,我很难编写针对嵌套->嵌套列表的lambda表达式。给定以下示例(抱歉,找不到更好的):

以下查询非常好,返回所有年龄超过45岁的会员的俱乐部:

public IList GetGoldMembers()
        {
            var clubs =   from c in ClubRepository
                          from m in c.Memberships 
                          where m.User.Age  >  45
                          select c;
            return clubs;
        }

目前,这就是我的lambda表达式知识的尽头。

我如何使用和上面示例相似的lambda表达式针对ClubRepository编写以上查询?

admin 更改状态以发布 2023年5月21日
0
0 Comments

这里有一种方法可以做到:

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

0
0 Comments

这可能有效(未经测试)...

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

0