Hello Stackoverflow社区, 我有以下问题。 我用这种格式创建了一个列表框(数据总是不同):
item1
item2
item1
item2
item1
item3
item1
但现在我想对此进行排序,并将其计算在一起:
4 x item1
2 x item2
1 x item3
我只是想不出能用动态文本做到这一点的方法。提前感谢你的帮助。
答案 0 :(得分:0)
我们假设您的listBox内容仅包含字符串,或者可以通过ToString()
区分。
您可以创建一个字典并将每个项目添加到其中。然后在值字段中计算它们:
Dictionary<string, int> counts = new Dictionary<string, int>();
foreach(var i in listBox1.Items)
{
if (!counts.ContainsKey(i.ToString()))
counts.Add(i.ToString(), 0);
counts[i.ToString()]++;
}
}
然后您可以将它们全部打印出来(类似于最新的C#版本):
foreach (KeyValuePair<string, int> entry in counts)
Console.WriteLine($"{entry.Value}x {entry.Key}");
您可以找到自己的解决方案来排序字典中的数据。请注意,字典内的数据无法在此类内部进行排序,因为字典不会跟踪任何顺序。然而,Linq有一种解决方法:StackOverflow: how-do-you-sort-a-dictionary-by-value