我想尝试只收集包含的集合的前20个条目。例如:
var teamsWithTeamMembers = (from t in db.Teams
orderby t.Name
select t)
.Include("TeamMembers")
我只想要第一支队伍中的20支队伍,而每支队伍我只需要前20名队员。 Take(20)
适用于团队,但我无法弄清楚如何只吸引20名团队成员
答案 0 :(得分:3)
这里有两个选择
使用匿名类型(例如我的示例)或DTO投影查询:
var teamsWithTeamMembers= db.Teams.OrderBy(t=>t.Name)
.Select(e=>new {e.Name,Team=e.TeamMembers.OrderBy(p => p.SomeProperty).Take(20)})
.Take(20);
使用显式加载:
var teams= db.Teams.OrderBy(t=>t.Name);
然后:
foreach(var t in teams )//be careful here, a round trip to your DB per each team
{
context.Entry(t)
.Collection(b => b.TeamMembers)
.Query()
.OrderBy(p => p.SomeProperty).Take(20)
.Load();
}