我有一个问题,当在用户界面中多次选择一个产品,然后在列表视图中多次出现...在多行中,我想成为一个有数量和价格的卡布奇诺的行。
我有一个产品清单。
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行并计算它们的数量。
Cappuccino ---> 2 ---> 1 Euro
在Linq中,你可以做一个group by和sum,然后你可以迭代这个列表。
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);
}