我做了一个linq查询,我想传递给视图,但它给了我这个错误
The model item passed into the dictionary is of type 'System.Data.Entity.Infrastructure.DbQuery`1[<>f__AnonymousType4`2[System.String,System.String]]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable`1
我的ViewModel
public class ManageScoreViewModel
{
public string fullName { get; set; }
public string teamName { get; set; }
}
控制器
public ActionResult Index()
{
MyteamViewModel ms = new MyteamViewModel ();
var vm = (from u in db.Users
join tm in db.Team_Members
on u.user_id equals tm.user_id
join t in db.Teams
on tm.team_id equals t.team_id
orderby t.name
select new { fullName = u.firstName + u.lastName, teamName = t.name });
// var vmlist = vm.ToList();
return View(vm);
}
视图是IEnumerable类型
@model IEnumerable<CTA2._0.ViewModels.ManageScoreViewModel>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.fullName)
</td>
<td>
@Html.DisplayFor(modelItem => item.teamName)
</td>
我尝试将查询转换为列表(var vmlist = vm.ToList();)。没工作。任何帮助将不胜感激。
答案 0 :(得分:7)
您的视图强烈输入ManageScoreViewModel
集合,但您的linq查询使用投影返回匿名对象。您需要返回ManageScoreViewModel
个对象的列表。您还可以在linq表达式
ToList()
方法
更改
select new { fullName = u.firstName + u.lastName, teamName = t.name });
到
select new ManageScoreViewModel { fullName = u.firstName + u.lastName,
teamName = t.name }).ToList();