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

Linq 如何使用lambda表达式查询嵌套列表,linq,lambda,Linq,Lambda,在我的存储库实现中,我可以使用lambda表达式运行以下查询: public IList<User> GetUsersFromCountry(string) { return _UserRepository.Where(x => x.Country == "Sweden").ToList(); } public IList GetUsersFromCountry(字符串) { 返回_UserRepository.Where(x=>x

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

public IList<User> GetUsersFromCountry(string)
{
    return _UserRepository.Where(x => x.Country == "Sweden").ToList();                  
}
public IList GetUsersFromCountry(字符串)
{
返回_UserRepository.Where(x=>x.Country==“瑞典”).ToList();
}
到目前为止,一切都很好,很简单。但是,我很难针对嵌套->嵌套列表编写lambda表达式。给出以下示例(抱歉,我想不出更好的示例):

下面的查询工作得非常好,返回所有会员年龄超过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;
        }
public IList GetGoldMembers()
{
var clubs=来自ClubRespository中的c
来自c.m.会员资格
其中m.User.Age>45
选择c;
返回俱乐部;
}
目前,我对lambda表达式的了解到此为止

我如何使用lambda表达式针对ClubPository编写上述查询,类似于上面的示例?

这可能会起作用(未经测试)


这里有一种方法:

var clubs = clubRepository
    .SelectMany(c => c.Memberships, (c, m) => new { c, m })
    .Where(x => x.m.User.Age > 45)
    .Select(x => x.c);
更通用的方法

List<T> list= new List<T>();
list= object1.NestedList1.SelectMany(x => x.NestedList2).ToList();
List List=新列表();
list=object1.NestedList1.SelectMany(x=>x.NestedList2.ToList();

当NestedList2与“list”的数据类型匹配时,这种方法是有效的,但并不真正说明如何将多个“from”语句转换为LINQ方法。为此,需要使用SelectMany方法(这就是C#编译器所做的)。。。
List<T> list= new List<T>();
list= object1.NestedList1.SelectMany(x => x.NestedList2).ToList();