有人能告诉我如何解决这个错误吗?
传递到字典中的模型项的类型是' System.Data.Entity.Infrastructure.DbQuery 1 [Project.ViewModels.TestViewModel]',但是这个字典需要一个类型&#的模型项39; System.Collections.Generic.IEnumerable 1 [System.Linq.IGrouping`2 [System.String,Project.ViewModels.TestViewModel]]'。
视图模型
public class TestViewModel
{
public string Name { get; set; }
public int NameCount {get; set; }
public int NameSum { get; set; }
public double NameAverage { get; set; }
}
行动方法
var groupedfListItems = db.FListItems.Include(f => f.FList)
.Include(f => f.Item)
.GroupBy(g => g.Item.Name)
.Select(lg =>
new TestViewModel
{
Name = lg.Key,
NameCount = lg.Count(),
NameSum = lg.Sum(w => w.Score),
NameAverage = lg.Average(w => w.Score)
});
return View(groupedfListItems);
我尝试追加AsEnumerable()
和ToList()
但没有成功。
查看
@model IEnumerable<IGrouping<string, Project.ViewModels.TestViewModel>>
<table class="table">
@foreach (IGrouping<string, Project.ViewModels.TestViewModel> item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Key)
</td>
<td>
@item.Count()
</td>
@foreach (var i in item)
{
<td>
@Html.DisplayFor(modelItem => i.Name)
</td>
<td>
@Html.DisplayFor(modelItem => i.NameAverage)
</td>
<td>
@Html.DisplayFor(modelItem => i.NameCount)
</td>
<td>
@Html.DisplayFor(modelItem => i.NameSum)
</td>
}
</tr>
}
</table>
答案 0 :(得分:0)
您视图中预期的类型为IEnumerable<IGrouping<string, Project.ViewModels.TestViewModel>>
,但您传递的类型为IQueryable<TestViewModel>
,错误只是指出了这一点。
尝试将View模型更改为:
@model IEnumerable<Project.ViewModels.TestViewModel>
或将您的代码后面的查询更改为:
var groupedfListItems = db.FListItems.Include(f => f.FList)
.Include(f => f.Item)
.Select(lg =>
new TestViewModel
{
Name = lg.Item.Key,
})
.GroupBy(g => g.Name);
在这里更新组内的计数。