对嵌套关联进行排序

时间:2013-03-28 11:32:07

标签: entity-framework

我的数据库

[ Departement ] *-* [ Group ] 1-* [ Room ]

一个部门可以有很多团体(很多人),一个团体可以有很多房间

我想返回具有特定ID的departement,在group.name上获取groups订单,并从room.number订购的组中获取rooms

到目前为止我有什么

db.Departement .Include("Group.Room").ToList().First(a => a.Id == idDepartement);

问题是我不知道如何对关联(组和房间)进行排序

感谢

1 个答案:

答案 0 :(得分:0)

如果输入xIEnumerable<Department>,那么:

x.SelectMany(d => d.Group).OrderBy(g => g.Name)

将导致IEnumerable<Group>按名称排序(跨所有部门)。 Enumerable.SelectMany获取Func<TIn, IEnumerable<TOut>>并将所有返回的可枚举合并为一个可枚举;这允许您跟踪从一个或多个起始对象到许多关联对象的关联。

  

希望返回具有特定身份证的部门[...]从按房间订购的团体中取出房间。数字

您希望结果是部门,团体或房间的集合吗?

  

.ToList().

这意味着您将从Entity源获取所有Departments及其所有组和房间,并将它们移动到本地内存中,然后丢弃大部分数据(所有数据都与第一个返回的部门无关)。除非数据相当小,否则最好在实体源(假设数据库服务器)上执行此操作,而不是浪费时间和带宽在本地复制它。