0

私のデータベース

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

部門には多くのグループ (多数 - 多数) を含めることができ、グループには多くの部屋を含めることができます。

departement特定の ID でを返し、groupsgroup.name で注文を取得し、room.number でrooms注文されたグループからを取得したい

私がこれまでに持っているもの

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

問題は、関連付け (グループと部屋) を並べ替える方法がわからないことです。

ありがとう

4

1 に答える 1

0

入力xが次のIEnumerable<Department>場合:

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

名前順になりIEnumerable<Group>ます(すべての部門にわたって)。Enumerable.SelectManyを取り、Func<TIn, IEnumerable<TOut>>返されたすべての列挙型を単一の列挙型にマージします。これにより、1 つまたは複数の開始オブジェクトから多くの関連オブジェクトへの関連付けをたどることができます。

特定のIDを持つ部門を返したい[...] room.numberで並べられたグループから部屋を取得する

結果を部門、グループ、または部屋のコレクションにしたいですか?

.ToList().

つまり、エンティティ ソースからすべてのグループと部屋を含むすべての部門を取得し、それらをローカル メモリに移動してから、ほとんどのデータを破棄します (すべて最初に返された部門に関連付けられていません)。データがかなり小さい場合を除き、時間と帯域幅をローカルにコピーするよりも、エンティティ ソース (データベース サーバーが想定) でそれを行う方がよいでしょう。

于 2013-03-28T11:44:59.423 に答える