Linq Запрос для сравнения, если коллекция содержит список строк - PullRequest
0 голосов
/ 03 февраля 2012

Я новичок в 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 голосов
/ 03 февраля 2012

Измените логику, проверьте путь в списке

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)))
...