2013-02-20 142 views
0

我期待從列表中動態計數出現了多少次項目。如果我指定了我正在查找的值,我可以在下面做到,但是我真正想要做的是迭代我的列表,計算出現次數並將其總計出來。我當前的代碼如下:如何計算列表中的字符串出現次數(字符串)

Dim itemlist As New List(Of String) 
itemlist.add("VALUE1") 
itemlist.add("VALUE2") 
itemlist.add("VALUE3") 


    Dim count As Integer = 0 

    For Each value In itemlist 

     If value.Equals("VALUE1") Then count += 1 

    Next 

Msgbox(count.tostring) 

所以我的觀點是,而不是搜索的價值,讓應用程序總起來,並顯示計數的出現次數它給用戶,類似於Excel中的「COUNTIF」。我找不到太多關於這個不使用LINQ,感謝

+0

所以你不想使用LINQ或for循環。你在找什麼?你能提供一個示例輸出嗎? – deepee1 2013-02-20 18:56:27

+1

Dim count = itemlist.Where(Function(s)s =「VALUE1」)。計數 – 2013-02-20 19:00:54

+0

我可以使用linq,我只是想通過使用列表來計算重複項的簡單方法。例如,如果我的列表包含「紅色」,「紅色」,「紅色」,「綠色」,它會輸出紅色-3,綠色-1 – 2013-02-20 19:12:05

回答

3

你可以用LINQ做到這一點很容易:

Msgbox(itemlist.Where(Function(value) value = "VALUE1").Count) 

要算重複,再次,很容易與LINQ:

Dim itemlist As New List(Of String) 
itemlist.Add("RED") 
itemlist.Add("RED") 
itemlist.Add("RED") 
itemlist.Add("GREEN") 

dim groups = itemList.GroupBy(Function(value) value) 

For Each grp In groups 
    Console.WriteLine(grp(0) & " - " & grp.Count) 
Next 

輸出:

RED - 3 
GREEN - 1 
+0

謝謝。不過,我打算根據列表中出現的情況進行填充。例如,讓我們說我的清單產生「紅色」,「紅色」,「紅色」,「藍色」。我想將出現的值顯示爲「RED」 - 3,「BLUE」 - 1.但是如果「GREEN」出現在列表中,該怎麼辦?我想只是填充每個獨特的,然後計數重複,而不是搜索設置值 – 2013-02-20 19:23:18

+0

真棒,非常感謝你的例子! – 2013-02-20 19:25:33

+0

非常好的解決方案。 – MonkeyDoug 2013-02-20 20:15:16

相關問題