如何将selectmany与groupby结合使用到MVC视图

时间:2012-03-17 16:51:26

标签: asp.net-mvc-3 model-view-controller c#-4.0 lambda

我在MVC应用程序中有以下lambda表达式。

 var toprating=  _db.Movie.SelectMany(m => m.Rating.Select(r=> new 

            {

           movieID=r.MovieID,
           MovieTitle= m.Title
            })).GroupBy(m=>m.movieID).ToList();

      ViewBag.TopMovie = toprating;
        }

我想将此传递给我。 我尝试在我的视图中写下以下内容

 IEnumerable<Movie> TopMovies = ViewBag.TopMovie;

但是出现了这个错误

Cannot implicitly convert type 'object' to 'System.Collections.Generic.IEnumerable<Movie>'. An explicit conversion exists (are you missing a cast?)

任何帮助都会得到满足。

1 个答案:

答案 0 :(得分:0)

我建议您创建一个描述您的域实体(电影)的类,如

public class MyMovie{
 public int movieID { get; set; }
 public string MovieTitle { get; set; }  
}

并将 linq 查询修改为

var toprating=  _db.Movie.SelectMany(m => m.Rating.Select(r=> new MyMovie
            {
              movieID=r.MovieID,
              MovieTitle= m.Title
            })).GroupBy(m=>m.movieID).ToList();

ViewBag.TopMovie = toprating;
IEnumerable<MyMovie> TopMovies = ViewBag.TopMovie; 

我假设电影是您的域实体,使用视图模型传递给视图。

您可能会发现this有用