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

GalleryMedias ソースへの参照を持たない匿名オブジェクトのコレクションを選択したため、選択後に GalleryMedias ソースからフィールドを使用できません。

GroupBy で使用するために他のすべての GalleryMedias プロパティをプルスルーする場合は、次の例のように、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 に答える