2013-03-13 32 views
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.I之間有一個關係,從Gallery和Media中獲取字段。我的結果目前看起來像這樣。

Id Title MediaTypeId 
355 record1 1 
355 record1 1 
354 record2 1 
354 record2 1 
353 record3 1 

所以,我想在選擇後由他們分組。但字段不是來自GalleryMedias,所以我不能通過組。

我該怎麼辦?

+0

沒有從你的問題中理解一件事......你可以通過提供樣本輸入和輸出來使它更清楚一點嗎? – MarcinJuraszek

+0

我想我知道你在說什麼,請看下面的答案。 – Oliver

回答

0

選擇之後,您的GalleryMedias源中無法使用字段,因爲您已選擇了一組不包含GalleryMedias源的匿名對象集合。

如果您想要拉動所有其他的GalleryMedias屬性以便在GroupBy中使用它們,可以在以下示例中執行類似的操作,即在Select語句中拉動GalleryMedias源對象。

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) 
相關問題