Группировка данных в ViewModel ASP.NET MVC & C # - PullRequest
0 голосов
/ 10 декабря 2018

У меня проблемы с пониманием того, как сгруппировать данные в ViewModel, заполнить их и передать их представлению.Я использую Entity Framework с подходом, основанным на коде.

Моя модель домена:

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 голосов
/ 10 декабря 2018

Вы можете получить количества, предполагая, что у вас есть 1 запись для каждого экземпляра продукта, используя запрос groupBy.

Следует отметить, что это не самая идеальная структура данных, поскольку у вас будут повторные записи для всех ваших количеств.Хранить тысячи дубликатов записей для отслеживания количества станет очень неэффективно.

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()
                    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...