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

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
        }
于 2013-05-09T09:29:10.547 回答
0

.Distinct() 将返回不同的分组(所有分组)。如果您希望年份由任何 invensys.Models.tble_news 表示,而不是 .Distinct() 使用

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