我有一个linq声明。
GalleryMedias
.Where(q => q.Gallery.Status == 1 && q.Media.Status == 1 && q.Media.MediaTypeId==1)
.Select(q => new
{
Id = q.Gallery.Id,
Title = q.Gallery.Title,
MediaTypeId = q.Media.MediaTypeId
}
)
.OrderByDescending(q=>q.Id)
如您所见,GalleryMedias和Gallery之间存在关联。我从Gallery和Media中获取字段。我的结果目前看起来像那样。
Id Title MediaTypeId
355 record1 1
355 record1 1
354 record2 1
354 record2 1
353 record3 1
所以,我想在选择后按他们分组。但是字段不是来自GalleryMedias,所以我不能分组。
我该怎么做?
答案 0 :(得分:0)
选择后,GalleryMedias源中的字段不可用,因为您已选择了一组没有引用GalleryMedias源的匿名对象。
如果您要浏览所有其他GalleryMedias属性以便在GroupBy中使用它们,您可以执行类似以下示例的操作,其中GalleryMedias源对象在Select语句中被提取。
GalleryMedias
.Where(q => q.Gallery.Status == 1 && q.Media.Status == 1 && q.Media.MediaTypeId==1)
.Select(q => new
{
Id = q.Gallery.Id,
Title = q.Gallery.Title,
MediaTypeId = q.Media.MediaTypeId,
GalleryMedia = q //Here you are including the GalleryMedia object in your annonymous object
}
)
.GroupBy(g => g.GalleryMedia.Property) //You can now access the GalleryMedia's properties in the GroupBy
.OrderByDescending(q=>q.Id)