Windows Формы - подсчитать подэлементы в списке просмотра? - PullRequest
0 голосов
/ 25 апреля 2020

У меня есть эта проблема, когда несколько раз выбран один продукт в пользовательском интерфейсе, а затем в списке просмотра он появляется несколько раз ... в нескольких строках я хочу быть одной строкой с капучино с количеством и его цена

enter image description here

У меня есть список продуктов:

public List<Product> productsList1;

, а затем

foreach (var item in productsList)
            {
                //listView1.Items.Add(item.ToString());
                ListViewItem lvi = new ListViewItem(item.Name);

                lvi.SubItems.Add(item.Price.ToString());
                listView1.Items.Add(lvi);
            }

В списке есть только название продукта и его цена .Как в списке просмотра посчитать, сколько он появляется, и если у нас есть 2 капучино и 1 опоздание, чтобы иметь 2 строки в просмотре списка и подсчитать их количество:

Капучино ---> 2 ----> 1 евро

Поздно -----> 1 >>>> 2 евро

1 Ответ

1 голос
/ 25 апреля 2020

В Linq вы можете сделать группу по сумме.

        var nl = from pl in productsList1
                 group pl by new { pl.Name }  into g
                 select new { Product = g.Key, Quantity = g.Count(), PricePerLine = g.Sum( ss => ss.Price)};

Затем вы можете повторить этот список

foreach(var item in nl)
{
    ListViewItem lvi = new ListViewItem(item.Name);

    //Quantity
    ListViewItem lvi = new ListViewItem(item.Quantity .ToString());

    //Price per line item
    lvi.SubItems.Add(item.PricePerLine .ToString());
    listView1.Items.Add(lvi);
}
...