我从控制器创建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());
来自控制器,但没有快乐。我错过了什么?
答案 0 :(得分:0)
model.ToList()
将返回List<T>
,其中T
是MyList。您的模型类型是直的MyList
。如果您上面的var
声明已经返回MyList
,请执行return View(model)
。
答案 1 :(得分:0)
这个人整个早上都困扰着我。我在下面的帖子中找到了我的问题的答案:
Linq Distinct() by name for populate a dropdown list with name and value
我基本上会返回以下内容:
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());
答案 2 :(得分:-1)
GroupBy返回IGrouping<TKey, TSource>
的集合,而不是MyList
(这很奇怪,你不会有列表列表。
将GroupBy
转换为列表甚至没有多大意义。你是否真的意味着OrderBy
?