C#MVC3 - Razor中的LINQ select和foreach循环,我缺少什么?

Rub*_*ini 2 razor asp.net-mvc-3

我在Controller中有以下Action:

public ViewResult Index()
{        
    //select
    var query = (from u in db.UserSets
                 join f in db.FriendRequestsSets on u.ID equals f.FriendID
                 orderby u.ID
                 select new {Id = u.ID, Nickname = u.Nickname}).AsEnumerable();

    ViewBag.FriendRequests = query;
    return View(this.UserColl());
}
Run Code Online (Sandbox Code Playgroud)

我的Razor视图中的以下foreach:

<ul>
@foreach (var item in ViewBag.FriendRequests)
{
    <li>@item.Nickname</li>
}
</ul>
Run Code Online (Sandbox Code Playgroud)

并出现以下错误:

*'object' does not contain a definition for 'Nickname'*
Run Code Online (Sandbox Code Playgroud)

我的代码中缺少什么?

CjC*_*oax 6

ViewBag是object类型,而不是Enumerable!

你可以做的是,有一个课程如下:

Class User{
  public int Id;
  public string Nickname;
  }
Run Code Online (Sandbox Code Playgroud)

然后填充User类列表如下:

var query = (from u in db.UserSets
             join f in db.FriendRequestsSets on u.ID equals f.FriendID
             orderby u.ID
             select new User{Id = u.ID, Nickname = u.Nickname}).ToList();
Run Code Online (Sandbox Code Playgroud)

最后在你看来这样做:

    @foreach (var item in ViewBag.FriendRequests as List<User> )
    {
      <li>@item.Nickname</li>
    }
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你.