Использование GroupBy и отображение разных сумм в зависимости от условий - LINQ Lambda Expressions - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть таблица с 3 столбцами.

enter image description here

И я хотел бы представить таблицу с такой структурой:

enter image description here

Может кто-нибудь показать мне, как это сделать с помощью лямбда-выражений?

Пока что я получил результат, только если хотел показать только один столбец:

var sum_data = _context.HechosFinanza
                .Where(x => x.Product.Sale_Type == "Cash Sale")
                .GroupBy(x => x.Product.Product_Name)
                .Select(x => Product { Tienda = x.Key, Total = x.Sum(s => 
s.sales_amount) });

Я не знаю, возможно ли что-то подобное (не знаю, просто пытаюсь это выяснить):

var sum_data = _context.HechosFinanza
                // I remove there where condition from here
                .GroupBy(x => x.Product.Product_Name)
                // And I add the where condition in each sum
                .Select(x => Product { Tienda = x.Key, 
                         TotalCash = x.Sum(s => s.sales_amount).Where(s => s.Product.Sale_Type == "Cash Sale"),
                         TotalCredit = x.Sum(s => s.sales_amount).Where(s.Product.Sale_Type == "Credit Sale") 
                });

1 Ответ

0 голосов
/ 27 ноября 2018

Хм, хорошо.Оказывается, я был очень близок.

Просто нужно было поставить оператор "Где" раньше.

Ответ:

var sum_data = _context.HechosFinanza
                // I remove there where condition from here
                .GroupBy(x => x.Product.Product_Name)
                // And I add the where condition in each sum
                .Select(x => Product { Tienda = x.Key, 
                         TotalCash = x.Where(s => s.Product.Sale_Type == "Cash Sale").Sum(s => s.sales_amount),
                         TotalCredit = x.Where(s.Product.Sale_Type == "Credit Sale") .Sum(s => s.sales_amount)
            });

И готово.

...