2013-03-28 119 views
0

我的數據庫排序上嵌套協會

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

一個DEPARTEMENT可以有很多組(多 - 多),以及一組可以有很多房間

我想用一個特定ID返回departement,得到在groups順序group.name並獲得由room.number

下令組rooms我有什麼到目前爲止

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

的問題是,我不知道如何排序的關聯(組,室)

感謝

回答

0

如果輸入xIEnumerable<Department>則:

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

會導致按名稱排列的IEnumerable<Group>(跨所有部門)。 Enumerable.SelectMany需要Func<TIn, IEnumerable<TOut>>並將所有返回的枚舉合併到一個枚舉中;這允許您遵循從一個或多個起始對象到許多關聯對象的關聯。

要與特定ID返回DEPARTEMENT [...]獲得通過room.number

下令組的房間你要得到的結果是各部門的集合,組或房間?

.ToList().

這意味着你得到所有部門與實體源的所有的團體和房間,並將其移動到本地內存則拋出數據之外最(所有沒有關聯之前第一個返回部門)。除非數據量很小,否則最好在實體源(數據庫服務器假設)上執行該操作,而不是浪費時間和帶寬在本地複製它。