Это из-за анонимного объекта в вашей SelectMany, а также GroupBy.
GroupBy не возвращает IEnumerable, а скорее IEnumerable<IGrouping<TKey, TSource>>
- по сути, это коллекция коллекций, в которой каждая подколлекция имеет одинаковое значение ключа.
В случае, если у вас есть, группировка по фильму Id даст вам довольно странную коллекцию:
toprating: [
[
// MovieID, Movie Title
{ 1, Movie1Title }, // one Id/title pair for every rating.
{ 1, Movie1Title },
{ 1, Movie1Title },
...
],
[
{ 2, Movie2Title }, // one title for every rating.
{ 2, Movie2Title },
{ 2, Movie2Title },
...
]
]
Нечто подобное, но если это действительно то, что вы хотите, хорошо. Затем, по вашему мнению, вы пытаетесь сделать это:
IEnumerable<Movie> TopMovies = ViewBag.TopMovie;
Но TopMovie - это IEnumerable<IGrouping<int, object>>
. Поэтому, конечно, это не может быть приведено к фильму.
Это даст вам объект и позволит вам перечислить его:
IEnumerable<IGrouping<int, object>> TopMovies = ViewBag.TopMovie;
Я подозреваю, что это не то, что вы на самом деле хотите сделать, но я не могу помочь без дополнительной информации.