我正在尝试对特定的 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
是否会以这种方式正确排序/分组。
最佳答案
您可以尝试使用 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 .
关于c# - 如何将 LINQ group 和 ordering 与父表和子表结合起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20529293/