在visual basic中,我试图检索所有选定的项目,而不只是一个。 这是尝试此过程之前的代码。
For Each line As String In lines
If line.Contains(lbActiveKeys.SelectedItem) Then
lines.Remove(line)
Exit For
End If
Next
我无法弄清楚如何检查该行是否包含任何lbActiveKeys.SelectedItems *(列表框) 我尝试做嵌套循环,但我得到的都是错误。
任何想法,最好的方法是什么?
干杯。
答案 0 :(得分:1)
您可以以相反的方式工作并遍历SelectedItems集合。这应该有效:
For Each Item As String In lbActiveKeys.SelectedItems
Dim SearchString As String = Item
If Lines.Contains(Item) Then
Lines.Remove(Lines.Find(Function(x) x = SearchString))
End If
Next
答案 1 :(得分:0)
你可以用linq做到这一点:
lines = lines.Where(Function(x As String) As Boolean
Return Not lbActiveKeys.SelectedItem.Cast(Of String) _
.Where(Function(y) As Boolean
Return x.Contains(y)
End Function).Any()
End Function).ToList()
它选择与所选项目列表不相交的项目,其中选择由一个字符串是否包含另一个字符串确定。
答案 2 :(得分:-1)
我认为你需要lbActiveKeys.SelectedItem.Value,因为你想要比较它们的字符串值而不是整个选定的对象......你可能还想让它们变得相同并修剪以确保它们正确比较:
For Each line As String In lines
If line.ToLower().Contains(lbActiveKeys.SelectedItem.Value.ToLower()) Then
lines.Remove(line)
Exit For
End If
Next