我使用asp net mvc 6開發了一個站點,我已經用作enom類別,現在我需要獲取每個enom值下的產品計數,
這是我的列舉,
namespace ecom.Data
{
public enum BookCategory
{
Action,
Comedy,
Drama,
Others
}
}
我想要的是在這個 enoms 下獲得產品數量,
看這里,沒有產品計數的前視圖
這是我的控制器看起來像,
using ecom.Data.Services;
namespace ecom.Controllers;
public class HomeController : Controller
{
private readonly IBooksService _service;
public async Task <IActionResult> BookView(string slug)
{
var data = await _service.GetBookBySlugAsync(slug);
if(data == null) return View("NotFound");
return View("BookView", data);
}
這是我用作產品模型的模型,
namespace ecom.Models
{
public class Book:IEntityBase
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public string Slug { get; set; }
public string Description { get; set; }
public double Price { get; set; }
public string Image { get; set; }
public string PublishDate { get; set; }
//enom
public BookCategory BookCategory { get; set; }
//Relationships
public List<Writter_Book> Writter_Books { get; set; }
//Publisher
public int PublisherId { get; set; }
[ForeignKey("PublisherId")]
public Publisher Publisher { get; set; }
}
}
我現在的cshtml視圖,
@foreach (var cat in Html.GetEnumSelectList<BookCategory>())
{
<li><a href="#">@cat.Text <span>()</span></a></li>
}
我想在 foreach 的 span 標簽中將產品數量增加到上面,任何人都可以幫助我嗎?
uj5u.com熱心網友回復:
您可以使用GroupBy并Count實作您的目標。
就像是
myBooksDataSource
.GroupBy(book => book.BookCategory)
.Select(group => new { Category = group.Key, Count = group.Count() });
這將輸出(BookCategory,Count)的集合。
{ BookCategory.Action, 20 }
{ BookCategory.Comedy, 204 }
如果您需要傳遞它,您可以創建一個類來保存該資料。
public class BookCategoryCountData
{
public BookCategory Category { get; set; }
public int Count { get; set; }
}
并選擇使用該物件。
public IEnumerable<BookCategoryCountData> GetBookCountByCategory()
{
return _context.Books
.GroupBy(book => book.BookCategory)
.Select(group => new BookCategoryCountData() {
Category = group.Key,
Count = group.Count()
});
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/456789.html
標籤:C# 网 asp.net-mvc 实体框架 .net-core
