我想计算和排序字符串的排序列表中的所有值
List<string> sortedList = new List<string>();
//name, number, weight
sortedList.Add("A,5,1");
sortedList.Add("A,3,2");
sortedList.Add("B,4,1");
sortedList.Add("B,6,2");
sortedList.Sort();
输入:(列表l)
Output: (List<Dicionary<string,int>> result):
A ( (5*1)+ ( 3*2) )
B ( (4*1) + (6*2) )
new List of dictionary <string, int>
1 - dic["A" , 11]
2 - dic["B" , 16]
答案 0 :(得分:1)
使用linq你可以做到这一点。
Dictionary<string, int> r = sortedList.Select(x => x.Split(','))
.GroupBy(x => x[0])
.ToDictionary(x => x.Key, x => x.Sum(y => int.Parse(y[1])*int.Parse(y[2])));
首先按,
拆分所有字符串。然后按数组的第一个元素对它们进行分组然后将它们转换为字典。第一要素是关键。并且值是element2*element3
答案 1 :(得分:0)
首先,您需要拆分字符串,以便获得乘法和键。
您可以使用Split
方法进行拆分。此外,您需要在拆分后跳过第一个元素。
var multArray = sortedList.Select (x=>int.Parse (x.Split(',')[1])*int.Parse (x.Split(',')[2]));
var keyArray = sortedList.Select (x=>x.Split(',')[0]);
multArray
是带有和的数组,keyarray
是带有键的数组。然后你需要填充字典。
for (int i = 0; i < keyArray.Count(); i ++)
{
if (dictionary.ContainsKey (keyArray[i]))
{
dictionary[keyArray[i]] += multArray [i];
}
else
{
dictionary.Add (keyArray[i], multArray [i]);
}
}