OrderBy in Include child using EF Core

问题描述 投票:1回答:2

在我的.NET Core / EF Core应用程序中,我有一个带有嵌套的子对象列表的模型。当我检索一个实例时,我需要嵌套列表由一个子属性命令。我理解通过查看类似的问题并报告了EF Core上的问题,我无法在检索实例时订购嵌套列表。所以现在我试图在内存中加载它。但在这里我也没有成功。

我正在使用存储库模式来访问DbContext。

排序此列表的正确方法是什么,以便始终从我的存储库中正确返回?

最新我试过:

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

        var result = loadedInMemory.Result.Children.OrderBy(c => c.Sequence);
        // When I order within the Task<Parent>, result becomes IOrderedEnumerable 
        // and I can't return it.

        return await result;
    }
c# entity-framework-core
2个回答
3
投票

您尝试返回的结果是有序的子项列表。那不是你想要的。而是对子项进行排序,然后返回父项:

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

    parent.Result.Children = parent.Result.Children.OrderBy(c => c.Sequence).ToList();

    return await parent;
}

-1
投票

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

您需要在末尾添加ToList()

© www.soinside.com 2019 - 2024. All rights reserved.