1

我从控制器创建一个 MVC 3 视图。我的模型“MyList”,包含大量记录。当我使用以下 linq 语句创建模型时:

var model = _db.MyList.GroupBy(r => r.myKey);

我收到错误消息:“传递到字典中的模型项的类型为 'System.Collections.GenericlList' 1 ......但该字典需要一个类型为 'System.Collections.Generic.IEnumerable' 的模型项......

在视图中,我在第一行中有以下代码:

@model IEnumerable<MyApp.Models.MyList>

我试着回来

return View(model.ToList());

从控制器,但没有喜悦。我错过了什么?

4

3 回答 3

0

model.ToList()将返回MyListList<T>所在的T位置。您的模型类型是直的MyList。如果var您上面的声明已经返回MyList,那就做吧return View(model)

于 2012-10-22T19:05:52.423 回答
0

这个人整个上午都在缠着我。我在以下帖子中找到了我的问题的答案:

Linq Distinct() 按名称填充带有名称和值的下拉列表

我基本上返回以下内容:

public static IEnumberable<MyModel> FindTheKeys(this IQueryable<MyModel> myList)
{
    return myList.OrderBy(r => r.AreaKey);
}

然后按照上述帖子中的说明执行选择。

var model = _db.MyModel.FindTheKeys().GroupBy(r => r.AreaKey).Select(g => g.First());
于 2012-10-23T16:37:40.723 回答
-1

GroupBy 返回一个集合IGrouping<TKey, TSource>,而不是MyList(这很奇怪,你不会有一个列表的列表。

GroupBy无论如何,将 a 转换为列表甚至没有多大意义。你是真的意思OrderBy吗?

于 2012-10-22T20:20:23.180 回答