在我的.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;
}
您尝试返回的结果是有序的子项列表。那不是你想要的。而是对子项进行排序,然后返回父项:
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;
}
var result = loadedInMemory.Result.Children.OrderBy(c => c.Sequence).ToList();
您需要在末尾添加ToList()