Linq查询比较if集合是否包含字符串列表

时间:2012-02-03 17:37:15

标签: vb.net linq list collections

我对Linq很新,我正在尝试编写搜索结果查询。

我们在服务台使用标记系统,我试图返回包含从下拉列表中选择的标签或TAGS子项的所有案例。

我正在使用路径比较来查找任何只选择了1个标签的子标签。这是我选择多个标签时的代码,但它不起作用。你能指出我正确的方向吗?

单一标签选择(工作)

   Dim tagpath = uxTags.SelectedItem.Text
   lnqCases = From i In lnqCases Where i.HelpDeskTagItems.Any(Function(x) x.Path.StartsWith(tagpath))

多标签选择(不工作)

    Dim tagpaths As New List(Of String)
    For Each i In TagList.SelectedItems
      tagpaths.Add(i.ToString)
    Next
    lnqCases = From i In lnqCases Where i.HelpDeskTagItems.Any(Function(x) x.Path.StartsWith(tagpaths.Any))

1 个答案:

答案 0 :(得分:0)

反转逻辑,检查列表中的路径

lnqCases = From i In lnqCases Where i.HelpDeskTagItems.Any(Function(x) tagpaths.Contains(x.Path))

或继续使用StartsWith逻辑

lnqCases = From i In lnqCases Where i.HelpDeskTagItems.Any(Function(x) Test.Exists(Function(m) m.StartsWithPath(x)))