Сначала создайте класс модели представления для представления данных, которые вы хотите передать
public class PostCount
{
public string Name { get; set; }
public int Count { get; set; }
}
Теперь в вашем методе действия вы можете запросить коллекцию Tags
и вызвать метод Count
для свойства PostTags
каждого объекта Tag
. В своем выражении LINQ вы можете создать проекцию для создания объекта модели представления.
public async Task<IEnumerable<PostCount>> AllTags()
{
var tags = await _context.Tags
.Select(a => new PostCount
{
Name = a.Name,
Count = a.PostTags.Count()
}
).ToListAsync();
return tags;
}
Приведенный выше вернет нужные вам данные при доступе к этому методу действия.
Если вы показываете это в представлении, вы можете вернуть созданный нами список вашему представлению. по вашему мнению, который строго типизирован для списка класса PostCount
, вы можете отобразить имя тега и его количество сообщений
public async Task<IEnumerable<PostCount>> AllTags()
{
var tags = await _context.Tags.Select(a => new PostCount
{
Name = a.Name,
Count = a.PostTags.Count()
}).ToListAsync();
return View(tags);
}
а в вашем AllTags.cshtml
представлении
@model List<PostCount>
<h3>Tags</h3>
@foreach(var tag in Model)
{
<p>@tag.Name @tag.Count </p>
}
Также вам, вероятно, необходимо иметь свойство первичного ключа в вашем PostTag
классе
public class PostTag
{
public int Id { set;get; }
// other properties you have
}