How to query a nested list using a lambda expression
在我的知识库实现中,我可以使用lambda表达式运行以下查询:
1 2 3 4 | public IList<User> GetUsersFromCountry(string) { return _UserRepository.Where(x => x.Country =="Sweden").ToList(); } |
到目前为止一切都很好,很简单。但是,我很难针对嵌套的->嵌套列表编写lambda表达式。举个例子(抱歉,我想不出更好的例子):
以下查询完全有效,并返回所有成员年龄超过45岁的俱乐部
1 2 3 4 5 6 7 8 9 | public IList<Clubs> GetGoldMembers() { var clubs = from c in ClubRepository from m in c.Memberships where m.User.Age > 45 select c; return clubs; } |
现在,我对lambda表达式的了解就到此为止。
如何使用lambda表达式对clubrepository编写上述查询,类似于上面的示例?
这可能有效(未经测试)…
1 | var clubs = ClubRepository.Where(c=>c.MemberShips.Any(m=>m.User.Age > 45)); |
有一种方法可以做到:
1 2 3 4 | var clubs = clubRepository .SelectMany(c => c.Memberships, (c, m) => new { c, m }) .Where(x => x.m.User.Age > 45) .Select(x => x.c); |