2017-04-01 62 views
-2

你好Stackoverflow社区, 我有以下问题。 我创建了一个列表框用这种格式(数据始终是不同的):统计列表框中的文本

item1 
item2 
item1 
item2 
item1 
item3 
item1 

,但现在我想解决这一起算什么这样的:

4 x item1 
2 x item2 
1 x item3 

我只是想不出一种能够用动态文本做到这一点的方法。感谢您提前提供的所有帮助。

+2

你有没有尝试过? –

+3

可能的重复[C#列表简单组和计数?](http://stackoverflow.com/questions/9702693/c-sharp-liststring-simple-group-and-count) – brykneval

+1

似乎是GroupBy和Count的组合会做的伎俩。尝试编写一些代码,看看是否可以解决您的问题。 –

回答

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