我正在尝试将特定的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;
因此,现在我需要根据
EventMedia
属性对EventGalleries.SortOrder
列表进行重新排序或分组。EventGalleries
数组已经按照正确的顺序排列,我现在确定EventMedia
是否将以这种方式正确排序/分组。 最佳答案
您可以尝试使用Join
和GroupBy
在一个查询中执行此操作:
var result = db.Media
.OrderBy(m => m.SortOrder)
.GroupBy(m => m.GalleryId)
.Join(
db.Galleries,
group => group.Key,
g => g.GalleryId,
(group, g) => new { Gallery = g, Media = group })
.OrderBy(x => x.Gallery.SortOrder);
这是working demo。