我在一个类中有一个文本属性,它将包含多个单词以及其他属性(索引、行号、开始时间、结束时间)。我为该类建立了一个数组列表(原始数据)。
我需要能够创建一个单词列表,该列表将在文本字段中为数组的每个成员独立查找。
然后,结果成员将显示在数据网格视图中。
数组中项目的文本可能看起来像这样。所有文本都已是小写,因此我不必担心区分大小写。项目 1 文本“这有单词 one”项目 2 文本“这有单词 two and three”项目 3 文本“这有单词 three”项目 4 文本“这有单词 four”项目 5 文本“这有单词 one and five”
这就是功能。
Private Sub filldgvData()
Dim query = From item In rawdata
Select item.index, item.LineNumber, item.StartTime, item.EndTime, item.Text
Where Text.Contains("one")
Order By LineNumber Ascending
dgvdata.DataSource = query.ToList
dgvdata.Columns(0).HeaderText = "Index"
dgvdata.Columns(1).HeaderText = "Line"
dgvdata.Columns(2).HeaderText = "Start Time"
dgvdata.Columns(3).HeaderText = "End Time"
dgvdata.Columns(4).HeaderText = "Text"
End Sub
这会按预期在数据网格视图中显示项目 1 和 2。
但是,我要查找的单词实际上是一个单词列表。我尝试了以下方法,搜索单词“one”、“two”或“three”。我没有 strSearch 数组将包含的确切列表。它可能比这个列表多或少。
Private Sub filldgvData()
Dim strSearch() As String = {"one", "two", "three"}
Dim query = From item In rawdata
Select item.index, item.LineNumber, item.StartTime, item.EndTime, item.Text
Where Text.Contains(strSearch)
Order By LineNumber Ascending
dgvdata.DataSource = query.ToList
dgvdata.Columns(0).HeaderText = "Index"
dgvdata.Columns(1).HeaderText = "Line"
dgvdata.Columns(2).HeaderText = "Start Time"
dgvdata.Columns(3).HeaderText = "End Time"
dgvSRT.Columns(4).HeaderText = "Text"
End Sub
这将返回一个错误,提示“与参数‘值’匹配的参数无法从‘String()’转换为‘String’。”我明白它的意思,但不知道如何解决这个问题。
理想情况下,此命令应返回包含单词“one”或“two”或“three”的所有项目(项目 1、2、3 和 5,但不包括 4)。它应仅返回项目一次,因此即使项目 2 包含两个单词,也不应该列出两次。