Ser*_*gan 37 c# linq entity-framework entity-framework-5
我想尝试以下工作:
_dbmsParentSections = FactoryTools.Factory.PdfSections
.Include(x => x.Children.OrderBy(y => y.Order).ToList())
.Include(x => x.Hint).Include(x => x.Fields)
.Where(x => x.FormId == FormId && x.Parent == null)
.OrderBy(o => o.Order)
.ToList();
Run Code Online (Sandbox Code Playgroud)
导致异常的部分是:
.Include(x => x.Children.OrderBy(y => y.Order).ToList())
Run Code Online (Sandbox Code Playgroud)
编辑:
经过进一步观察,
_dbmsParentSections.ForEach(x => x.Children = x.Children.OrderBy(y => y.Order).ToList());
Run Code Online (Sandbox Code Playgroud)
为我完成了这项工作(在初次Factory
通话之后没有Children.OrderBy
).
小智 16
根据此文档,从 EF Core 5.0 开始,您可以按包含实体的属性进行排序:
await context.Parents
.OrderBy(parent => parent.Order)
.Include(parent => parent.Children.OrderBy(child => child.Order))
.ToListAsync();
Run Code Online (Sandbox Code Playgroud)
上面的示例按顺序对父实体进行排序,并按子实体的顺序属性对子实体进行排序。
Ger*_*old 12
扩展方法Include
仅仅是一个包装器DbQuery.Include
.在内部它不执行表达式但仅解析它们,即它采用它们的成员表达式并将它们转换为路径作为字符串.该路径用作输入DbQuery.Include
.
之前已经请求增强功能Include
,例如通过包括Where
子句来允许部分加载的集合.订购可能是另一个变更请求.但正如您所见,由于Include
整个机制的内部工作将不得不重新设计以实现此类增强.我目前的路线图上没有看到它,所以可能需要一段时间......
根据用例,您可能不需要加载单独的查询或之后进行排序。
在我的情况下,我需要在视图中循环时订购它们,所以我只是在那里订购
@foreach (var subObject in Object.SubObjects.OrderBy(x=>x.Order))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
36044 次 |
最近记录: |