Web ページで、BlogCategoryName にカテゴリ内のブログの数を返すことができるようにしたいと考えています。例えば
ブログ名X(3)
ブログ名Y(4)
....
エンティティ フレームワークを使用しており、ブログ カテゴリ クラスがあります。
namespace emoCard.Domain.Entities
{
public class BlogCategory
{
public BlogCategory()
{
this.Blogs = new List<Blog>();
}
public int BlogCategoryID { get; set; }
public string BlogCategoryName { get; set; }
public string BlogCategoryDescription { get; set; }
public int BlogCategoryOrder { get; set; }
public List<Blog> Blogs { get; set; }
}
}
次の行に沿ってビューモデルをセットアップできます
namespace emoCard.WebUI.Models
{
public class BlogCategoryViewModel
{
public IEnumerable<BlogCategory> BlogCategories { get; set; }
}
}
そして、次のようなコントローラーを用意します
public PartialViewResult BlogCategories()
{
BlogCategoryViewModel viewModel = new BlogCategoryViewModel
{
BlogCategories = repository.BlogCategories.Include(b => b.Blogs)
};
return PartialView(viewModel);
}
次に、ビュー内の各カテゴリのブログの数を数えます。
これは機能しますが、これには多くの問題があります。これらは:
- すべての情報を引き戻す必要があります (つまり、カウントだけのブログ情報は必要ありません)。
- ビューでカウントを計算するのは正しくないようです。
ビューモデルを変更して、ブログのカテゴリと各カテゴリに関連付けられているブログの数を設定し、すべてのブログ情報ではなく、カテゴリとブログをカウントする linq クエリを作成できるようにする必要があると思います。新しいビューモデルは、
public BlogCategoryMenuItem(BlogCategory blogCategories, int numberOfBlogs)
{
BlogCategories = blogCategories;
NumberOfBlogs = numberOfBlogs;
}
public class BlogCategoryViewModel
{
public IEnumerable<BlogCategoryMenuItem> BlogCategoryMenuItem { get; set; }
}
2 つの質問があります:
1. これは私が抱えている問題を解決する最善の方法ですか?
2. linq を使用してこのビューモデル オブジェクトを設定するにはどうすればよいですか?
ご協力いただきありがとうございます。