2017-04-01 33 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