我无法理解如何在ViewModel中对数据进行分组,填充数据并将其传递给视图。我将实体框架与代码优先方法结合使用。
我的域模型是:
public class Product
{
public int ProductId { get; set; }
[DisplayName("Name of the product")]
public string ProductName { get; set; }
[DisplayName("Descritpion of the product")]
public string ProductDescription { get; set; }
[DisplayName("Price of the product")]
public decimal ProductPrice { get; set; }
public int EAN { get; set; }
public int CategoryId { get; set; }
public virtual Category Categories { get; set; }
}
我也有我的视图模型:
public class ProductIndexGroup
{
public int EAN { get; set; }
public string ProductName { get; set; }
public int Quantity { get; set; }
}
我的目标很简单,但是作为ASP.NET MVC中的新手,我很难实现它。我想使用我的视图模型对数据进行分组并在这样的视图中显示它:
EAN Product Name Quantity
-----------------------------------
12354 Product1 5
98765 Product2 2
非常感谢您的帮助。
答案 0 :(得分:2)
假设使用groupBy查询为每个产品实例有1条记录,则可以获取数量。
要注意的是,这不是最理想的数据结构,因为您将重复记录所有数量。存储成千上万的重复记录以跟踪数量将变得非常低效。
var products = productCollection //This is however you are accessing your product db set
.GroupBy(c => new { c.EAN, c.ProductName})
.Select(c => new ProductViewModel {
EAN = c.Key.EAN,
ProductName = c.Key.ProductName,
Quantity = c.Count()
});