0

年ごとにグループ化された要素のリストを表示しようとしています。

これは私がコントローラーで行ったことです:

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

そして、これは私がビューで行ったことです

@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.IGrouping2[System.Int32,invensys.Models.tble_news]]' ですが、このディクショナリにはタイプ 'System.Collections.Generic のモデル アイテムが必要です.IEnumerable`1[invensys.Models.tble_news]'.

4

2 に答える 2

0

GroupByIEnumerable<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
        }
于 2013-05-09T09:29:10.547 に答える
0

.Distinct() は個別のグルーピング(すべてのグルーピング) を返します。年を任意の invensys.Models.tble_news で表す場合は、.Distinct() の代わりに使用します

.Select(grouping => grouping.First())
于 2013-05-09T09:31:27.100 に答える