0

我有一个 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,所以我无法进行分组。

我该怎么做?

4

1 回答 1

0

在 Select 之后,您的 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)
于 2013-03-16T19:01:04.403 回答