C# EF Core-如何包含子实体,但限制返回的子实体的数量

C# EF Core-如何包含子实体,但限制返回的子实体的数量,c#,entity-framework-core,C#,Entity Framework Core,我正在使用.NETCore3.1。我有一个具有数千个子元素的父元素,但我只想检索最近的10个子元素(稍后将使用分页)。当我运行以下查询时: context.Parent.Include(p => p.Child) 它将返回所有的孩子,速度非常慢。我怎样才能只返回10个子项,然后再使用它进行分页?EF阻止在Include中使用lambda,例如context.Parent.Include(p=>p.Child.Take(10))引发异常 我需要多次调用数据库吗?如果从子项开始编写查询,会怎

我正在使用.NETCore3.1。我有一个具有数千个子元素的父元素,但我只想检索最近的10个子元素(稍后将使用分页)。当我运行以下查询时:

context.Parent.Include(p => p.Child)
它将返回所有的孩子,速度非常慢。我怎样才能只返回10个子项,然后再使用它进行分页?EF阻止在Include中使用lambda,例如
context.Parent.Include(p=>p.Child.Take(10))
引发异常


我需要多次调用数据库吗?

如果从子项开始编写查询,会怎么样

Context.Chidlren.Where(x => condition ( x.Parent)).Include(x => x.Parent).Take(10).Select(x=> x.Parent)

我希望这个问题有帮助

var result = Parentlist
.Select(a => new { a, Childs = a.Childs.Take(10).ToList() })
.AsEnumerable() 
.Select(x =>
{
    x.a.Childs = x.Childs;
    return x.a;
}).ToList();

等待EF 5:。在此之前:投影到视图模型。谢谢@GertArnold,我知道这是即将推出的.NET5的一项功能。这就是为什么我第一次说我正在使用.NETCore3.1。我不想使用.NET 5预览。如果查询仅限于父级和子级,则可以在将关系切换回投影之前,将主题更改为子表、按父级ID筛选、包含父级并限制子级。父对象应该都指向同一个引用父对象,这样任何一个都可以。欢迎使用StackOverflow。请提供一些解释,为什么您认为您提出的解决方案可能有助于OP。有趣的解决方案据我所知,OP希望每个家长的前10个孩子。不仅仅是10页的孩子。嗯,你是对的。只有当只有一个匹配的父项时,这才有效。
    var model = context.parent.Where(condition).OrderBy(x).Take(y).Skip(z)
    .select(c=> new parentViewModel 
    {
        Id = c.Id,
        Name= c.Name,
        children = c.children.where(condition)
                    .OrderByDescending(x=> x.CreateDate)
                    .take(pageSize)
                    .Select(x => new childViewModel {
                      Id = x.Id,
                      ChildName = x.Name
                       });
    });