2013-05-09 55 views
0

我想組年從DB這是我MVC和LINQ GROUPBY年

public ActionResult YearNewsList() 
     { 
      var YearsList = db.tble_news.GroupBy(x => x.content_show_date.Value.Year).Distinct(); 
      return PartialView(YearsList); 
     } 
    and on view 


@model IEnumerable<invensys.Models.tble_news> 



    @foreach (var item in Model) { 

       @Html.DisplayFor(modelItem => item.content_show_date.Value.Year) 

     } 

但是當我運行此我得到以下

模型項目傳入該字典的類型爲 'System.Data.Entity.Infrastructure.DbQuery 1[System.Linq.IGrouping 2 [System.Int32,invensys.Models.tble_news]]', ,但該字典需要 類型的模型項'System.Collections.Generic。 IEnumerable`1 [invensys.Models.tble_news]」。

許多在此先感謝 碎甲彈

+0

什麼類型是「無功YearList」? – 2013-05-09 09:27:44

回答

0

GroupBy返回IEnumerable<IGrouping<TKey, TSource>>對象,你儘量做到IEnumerable<TSource>

在你的情況,你應該定義視圖模型

@model IEnumerable<IGrouping<int, invensys.Models.tble_news>>

如果您x.content_show_date.Value.Year類型爲int。

然後你就可以像這樣顯示的相關信息:

 @foreach (var groupItem in model) 
     { 
      @Html.DisplayFor(groupItem.Key) 
      //some code to display groupitems by loop groupItem 
     } 
+0

謝謝大家,但Jarvan你的方法做了很多謝絕 Hesh – hesh 2013-05-09 10:25:16

0

.Distinct()將返回disctint 分組(所有分組)。 如果你想一年受到任何invensys.Models.tble_news來表示,而不是.Distinct,()使用

.Select(grouping => grouping.First())