Linq 如何使用lambda表达式查询嵌套列表
在我的存储库实现中,我可以使用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
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();