如何计算列表视图列中的特定单词

时间:2012-06-01 17:48:35

标签: vb.net

我有一个表格,它是1个列表视图和一个文本框。
*列表视图总共有100行数据
*列表视图有5列
*第3列只有两个可能的单词yesno

我想计算第3列中单词yes的出现次数

使用此代码计算总行数:

''''''''''COUNT TOTAL ADMISSION''''''''''''''

Dim rowcount As Integer = 0

For Each item As ListViewItem In LVfeestatementBA_I.Items
  rowcount = CInt(item.SubItems(0).Text) 'Considering every column always have some value
Next

txttotaladBA_I.Text = rowcount.ToString()

任何帮助都会很棒

编辑1

这是一项学校作业。正如我所说,我的目标是找出第3列中单词的出现次数。我有MS访问数据库,它与代码连接并提供列表视图的数据。列表视图有5列,总共有100行。 col-3中的数据仅包含三个单词genocccc。现在想要对包含代码的单词计算col-3并在textbox1

中显示如(68)的数字

编辑2

我应用了thedarkspoon提供的功能,但它没有显示结果。我只想将结果显示在textbox1中,例如。如果单词总数为78,那么在form_load时,它应在78中显示textbox1。我通过添加最后textbox1.text = numofyes并将变量从integer更改为string现已正常工作

来解决了这个问题

2 个答案:

答案 0 :(得分:1)

我不太了解你的情况(你必须更清楚)。

无论如何,给定一个ListView显示每个有3个子项的项目,并且我们知道第三个子项将具有“是”或“否”的值,我们可以构建一个查询(使用linq):

     var collectionOfListViewItems = listView1.Items.Cast<ListViewItem>();
     var numberOfrowsWithTheThirdSubItemTextEqualToYes = (from c in collectionOfListViewItems where c.SubItems[3].Text == "yes" select c).Count();        

没有linq你可以做一个foreach:

     var numberOfrowsWithTheThirdSubItemTextEqualToYes = 0;
     foreach (ListViewItem  item in listView1.Items)
     {
        if (item.SubItems[3].Text == "yes")
           numberOfrowsWithTheThirdSubItemTextEqualToYes++;
     }

答案 1 :(得分:1)

好的,你去了,我把它作为一个功能,但你可以轻松地将其改编为子程序:

Function countyes()
    'Set up a variable to count the number of yes:
    Dim numofyes As Integer = 0
    'Count the number of yes (Replace listview1 with the name of your listview):
    For Each item As ListViewItem In ListView1.Items
        'If the Yes/No is in column 3, you are looking in subitem 2:
        If item.SubItems(2).Text = "Yes" Then
            'Increment the variable by one if the value is yes:
            numofyes = numofyes + 1
        End If
    Next
    'Return our total number of Yes that we found:
    Return numofyes
End Function

希望这有帮助!