C# 得到“的和”;数量“;按属性分组时
我有一份班级产品清单C# 得到“的和”;数量“;按属性分组时,c#,linq,C#,Linq,我有一份班级产品清单 List<Products> lstProducts; public class Products { public string Types {get; set;} public string Quantity {get; set;} } 我想返回一个包含类型及其总数量的字典: (Silver, 3) (Gold, 1) 我尝试了以下代码,但它给了我错误的计数,我做错了什么 lstProducts.GroupBy(x => x
List<Products> lstProducts;
public class Products
{
public string Types {get; set;}
public string Quantity {get; set;}
}
我想返回一个包含类型及其总数量的字典:
(Silver, 3)
(Gold, 1)
我尝试了以下代码,但它给了我错误的计数,我做错了什么
lstProducts.GroupBy(x => x.Types).
ToDictionary(g => g.Key.ToString(), g => g.Count().ToString());
您的
数量
属于数据类型字符串
,因此您需要首先将其转换为int
,然后应用Sum
计算特定类型
的总量数量
var result = lstProducts
.GroupBy(x => x.Types)
.ToDictionary(
g => g.Key.ToString(),
g => g
.Select(x => !string.IsNullOrEmpty(x.Quantity) ? Convert.ToInt32(x.Quantity) : 0)
.Sum()
.ToString());
foreach (var item in result)
Console.WriteLine(item.Key + " - " + item.Value);
Console.ReadLine();
输出:
您的
数量
属于数据类型字符串
,因此您需要首先将其转换为int
,然后应用Sum
计算特定类型
的总量数量
var result = lstProducts
.GroupBy(x => x.Types)
.ToDictionary(
g => g.Key.ToString(),
g => g
.Select(x => !string.IsNullOrEmpty(x.Quantity) ? Convert.ToInt32(x.Quantity) : 0)
.Sum()
.ToString());
foreach (var item in result)
Console.WriteLine(item.Key + " - " + item.Value);
Console.ReadLine();
输出:
类似这样的内容:
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();
大概是这样的:
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();
@ArunPratap我只是不想要
类型的计数。我想要他们的数量的总和,如示例中所述。我的代码没有返回那你是说你想要一个总数?如果是这样,请使用a并将数字键入整数或其他合适的数字,而不是字符串。@ArunPratap我只是不想要类型的计数。我想要他们的数量的总和,如示例中所述。我的代码没有返回那你是说你想要一个总数?如果是这样的话,请使用a并将数字键入整数或其他合适的数字,而不是字符串。