在ViewModel ASP.NET MVC和C#

时间:2018-12-10 17:35:07

标签: c# asp.net-mvc entity-framework

我无法理解如何在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

非常感谢您的帮助。

1 个答案:

答案 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()
                    });