按属性分组时获得“数量”之和

时间:2018-12-27 07:18:27

标签: c# linq

我有我的班级产品列表。

List<Products> lstProducts;

public class Products
{
    public string Types {get; set;}
    public string Quantity {get; set;}
}   

列表中有以下项目:

 Types      Quantity
 Silver       2
 Gold         1  
 Silver       1

我想返回具有类型及其数量总数的字典:

(Silver, 3)
(Gold, 1)

我尝试了以下代码,但计数错误,我在做什么错了?

lstProducts.GroupBy(x => x.Types).
    ToDictionary(g => g.Key.ToString(), g => g.Count().ToString());

2 个答案:

答案 0 :(得分:5)

您的Quantity的数据类型为string,因此您需要先将其转换为int,然后应用Sum来计算特定{{ 1}}。

Quantity

输出:

enter image description here

答案 1 :(得分:0)

类似这样的东西:

 var data = lstProducts.GroupBy(i => i.Types)
                                  .Select(x => {
                                          var ret = x.First();
                                          ret.Quantity = x.Sum(xt => Convert.ToInt32(xt.Quantity)).ToString();
                                          return ret;
                                         }).ToList();