首页 > 解决方案 > 使用 EF Core 包含子项中的 OrderBy

问题描述

在我的 .NET Core / EF Core 应用程序中,我有一个包含子对象嵌套列表的模型。当我检索一个实例时,我需要按子属性之一对嵌套列表进行排序。

对此列表进行排序以使其始终从我的数据库中正确返回排序的正确方法是什么?

现在我从数据库加载后这样做:

public async Task<Parent> GetParent(int id)
{
    var result = await context.Parents
        .Include(p => p.Children)
        .SingleOrDefaultAsync(p => p.Id == id);

    result.Children = result.Children.OrderBy(c => c.Sequence).ToList();

    return result;
}

标签: c#entity-framework-core

解决方案


从 Entity Framework Core 5.0 开始,您可以直接在语句中进行排序 ( OrderBy) 和过滤 ( )(有一些限制)。请参阅Microsoft 文档WhereInclude

因此,您的陈述可以简化如下:

    public async Task<Parent> GetParent(int id)
    {
        return await context.Parents
            .Include(p => p.Children.OrderBy(c => c.Sequence))
            .SingleOrDefaultAsync(p => p.Id == id);
    }

在我看来,这是 EF Core 向前迈出的一大步。


推荐阅读