一起计算列表框中的文本

时间:2017-04-01 16:30:56

标签: c# sorting listbox format

Hello Stackoverflow社区, 我有以下问题。 我用这种格式创建了一个列表框(数据总是不同):

item1
item2
item1
item2
item1
item3
item1

但现在我想对此进行排序,并将其计算在一起:

4 x item1
2 x item2
1 x item3

我只是想不出能用动态文本做到这一点的方法。提前感谢你的帮助。

1 个答案:

答案 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