我想獲得一個特定的LINQ結果集,並進行分組。如何將LINQ組和訂單與父表和子表結合起來?
我有兩個模型,Gallery
和Media
。畫廊包含媒體。
Gallery
和Media
對象都由名爲SortOrder
的鍵(列)排序。
我試圖做一個選擇返回所有的媒體在一組的畫廊,但媒體必須是:
- 由
GalleryId
(圖庫鍵) - 畫廊通過有序分組
Gallery.SortOrder
- 通過
Media.SortOrder
下令媒體所以結果集看起來像:
Gallery 1
Media 1
Media 2
Media 3
Gallery 2
Media 1
Media 2
Media 3
Gallery 3
Media 1
Media 2
Media 3
我目前有:
var EventGalleries = from g in db.Galleries
where g.EventId == id
orderby g.SortOrder
select g.GalleryId;
var EventMedia = from m in db.Media
where EventGalleries.Contains(m.GalleryId)
orderby m.SortOrder ascending
select m;
所以現在我需要通過EventGalleries.SortOrder
屬性重新排序或組的EventMedia
列表。
EventGalleries
數組已經按照正確的順序,我現在確定EventMedia
將以這種方式正確地排序/分組。
只是要注意,上面只能當你能保證所有的畫廊至少有1種介質。如果有一個沒有媒體的畫廊'g3',輸出中缺少'g3'。見工作演示的叉子。 http://ideone.com/RWgaxt –