c# - 使用 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;
}
解决方案
从 Entity Framework Core 5.0 开始,您可以直接在语句中进行排序 ( OrderBy
) 和过滤 ( )(有一些限制)。请参阅Microsoft 文档。Where
Include
因此,您的陈述可以简化如下:
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 向前迈出的一大步。
推荐阅读
- serilog - 是否可以创建一个为任何 serilog 消息添加前缀的记录器?
- c++ - C++ 为什么访问数组中的元素会返回一个指针?
- python - 指定从 windows cmd 行调用时要使用的 Python 版本
- javascript - 渲染前在 Nuxtjs 上获取 Firebase
- python - 使用python从文本列中提取有意义的信息
- java - 用于模拟 JPAQueryFactory 的 Junit、Mockito 和 Querydsl (Mysema)
- enterprise-architect - Enterprise Architect 组件内部的组件部分
- swift - 迅速如何等到所有skaction完成
- php - 如何向多维数组添加值?
- mongodb - 如何在具有 ca 证书的元数据库中添加 MongoDB 以进行身份验证