无法将类型'System.Collections.Generic.List <AnonymousType#1>'隐式转换为'System.Collections.Generic.List <FirstApp.Model.TeamDetails>

Tee*_*rth 1 c# linq asp.net-mvc

我收到了这个错误

无法隐式转换 System.Collections.Generic.List<AnonymousType#1>System.Collections.Generic.List<FirstApp.Model.TeamDetails>

我的代码出了什么问题?

这是我的代码

TeamDetails

public class TeamDetails
{
    [Key]
    public int TeamId { get; set; }
    public string TeamName { get; set; }
    public string Description { get; set; }
    public int? UserCount { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

视图模型

public class ViewTeamList
{
    public List<TeamDetails> TeamNext { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

调节器

public ActionResult Next(int dataid)
{
    ViewTeamList viewTeamList = new ViewTeamList();
    var a = from t in tDbContext.Teams
            join u in tDbContext.Users on t.TeamId equals u.TeamId into g
            where t.Deleted != true
            select new { TeamId= t.TeamId,TeamName = t.TeamName, Description = t.Description, UserId = g.Count() };

    var next = a.OrderBy(t1 => t1.TeamId).Where(t1 => t1.TeamId > dataid).FirstOrDefault();
    viewTeamList.TeamNext = a.ToList(); 
    return PartialView("_ViewTeamDetails", viewTeamList);
}
Run Code Online (Sandbox Code Playgroud)

我无法将此值分配给

viewTeamList.TeamNext = a....; 
Run Code Online (Sandbox Code Playgroud)

eka*_*kad 5

这构造了一个匿名类型而不是 TeamDetails

select new { TeamId= t.TeamId,TeamName = t.TeamName, Description = t.Description, UserId = g.Count() }
Run Code Online (Sandbox Code Playgroud)

你应该把它改成下面

select new TeamDetails { TeamId = t.TeamId, TeamName = t.TeamName, Description = t.Description, UserCount = g.Count() }
Run Code Online (Sandbox Code Playgroud)

所以a.ToList()会是一个List<FirstApp.Model.TeamDetails>