2013-02-20 192 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

相关问题