Модельные классы:
public class Video
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime ReleasedDate { get; set; }
public byte GenreId { get; set; }
public Genre Genre { get; set; }
public Classification Classification { get; set; }
public IList<Tag> Tags { get; set; }
}
public class Genre
{
public byte Id { get; set; }
public string Name { get; set; }
public IList<Video> Videos { get; set; }
}
Например, названия жанров: боевик, драма, комедия и ужас.
Для жанров комедии и ужасов нет видео.
Просмотр модели Класс:
public class CountOfVideos
{
public string Classification { get; set; }
public int NumberOfMovies { get; set; }
}
Класс контроллера:
public ActionResult Movies()
{
var movies = _context.Videos
.GroupBy(v => v.Genre.Name)
.Select(g => new CountOfVideos { Classification = g.Key, NumberOfMovies = g.Count() })
.ToList();
return View(movies);
}
Вид:
@model IEnumerable<LinqTest.ViewModels.CountOfVideos>
<table class="table table-bordered table-hover">
<thead>
<tr>
<th>Name</th>
<th>Count</th>
</tr>
</thead>
<tbody>
@foreach (var movie in Model)
{
<tr>
<td>@movie.Classification</td>
<td>@movie.NumberOfMovies</td>
</tr>
}
</tbody>
Код работает правильно, но он не показывает названия жанров, в которых нет видео.
Вид генерирует что-то вроде:
Действие 23
Драма 15
но я хотел бы создать Действие 23 Драма 15 Комедия 0 Ужасы 0.