Можно ли сравнить строку со всеми элементами массива без al oop? - PullRequest
0 голосов
/ 26 марта 2020

Можно ли использовать встроенную функцию для сравнения строки со всеми значениями в массиве? Вот так:

Dim NormalString as string = "Test"
Dim ArrayString = New String() {"Test", "Test2", "Test3"}

If NormalString = ArrayString.AllItems Then
    Debug.WriteLine("String found in Array")
End If

Или мне придется перебирать строки в al oop и сравнивать их одну за другой в al oop?

Примечание: я понимаю, что ArrayString.AllItems функция не доступна.

Ответы [ 2 ]

2 голосов
/ 26 марта 2020
If ArrayString.Any(Function(s) s = NormalString) Then

Вы можете вызвать Any на любом IEnumerable(Of T), поэтому любой массив, коллекция или запрос LINQ. Вызов Any без аргумента эквивалентен проверке, является ли Count больше нуля. С аргументом он сообщит вам, соответствуют ли какие-либо элементы в списке указанным критериям.

1 голос
/ 26 марта 2020

Для точной строки:

Function ExistExactStringInArray(sourceArr() As String, searchedString As String, Optional ignoreCase As Boolean = True) As Boolean
    Return (From element As String In sourceArr
            Where CBool(If(ignoreCase, (
                 element?.Trim.ToLower = searchedString?.Trim.ToLower),
                (element = searchedString)))).Count > 0
End Function

Для частичной строки:

Function ExistPartialStringInArray(sourceArr() As String, searchedString As String, Optional ignoreCase As Boolean = True) As Boolean

    Return (From element As String In sourceArr
            Where CBool(If(ignoreCase,
                            element?.Trim.ToLower.IndexOf(searchedString?.Trim.ToLower) > -1,
                            element.IndexOf(searchedString) > -1))).Count > 0
End Function
...