VB.NET If-Else в списке - PullRequest
       6

VB.NET If-Else в списке

10 голосов
/ 18 июля 2011

Я просто хочу знать, есть ли подход в VB.NET, который может определить, существует ли конкретное значение в списке или что-то, что можно использовать в моем условии If-else.Сейчас я использую это:

If ToStatus = "1CE" Or ToStatus = "2TL" Or ToStatus = "2PM" Then
    'Do something
Else
    'Do something
End If

Это прекрасно работает, но как, если у меня будут сотни строк для сравнения с ToStatus в будущем?Это будет кошмар!Теперь, если такая функциональность существует, как я могу добавить «И» и «Или» в утверждении?

Заранее спасибо!

Ответы [ 6 ]

21 голосов
/ 18 июля 2011

Вы можете использовать функцию Contains:

Dim someList = New List(Of String) From { ... }
If Not someList.Contains(ToStatus) Then
5 голосов
/ 20 ноября 2015

if {"1CE","2TL","2PM"}.Contains(ToStatus)

затем ..... Конец I

4 голосов
/ 19 мая 2012

Вы можете использовать выбранный регистр

select case A
   case 5,6,7,8
       msgbox "you are in"
   case else
       msgbox "you are excluded"
end select
3 голосов
/ 22 июля 2013

Как и Слакс указал , вы можете использовать Contains в коллекции enumerable. Но я думаю, что читаемость страдает. Мне все равно, если какой-нибудь список содержит мою переменную; я хочу знать, если моя переменная в некоторый список. Вы можете заключить содержимое в метод расширения следующим образом:

Imports System.Runtime.CompilerServices
Module ExtensionMethods

    <Extension()> _
    Public Function [In](Of T)(ByVal item As T, ByVal ParamArray range() As T) As Boolean
        Return range.Cast(Of T).Contains(item)
    End Function

End Module

Тогда звоните так:

If  ToStatus.In("1CE","2TL","2PM") Then
0 голосов
/ 18 ноября 2013

Удалить дубликаты из списка

Dim ListWithoutDuplicates As New List(Of String)
For Each item As String In ListWithDuplicates

    If ListWithoutDuplicates.Contains(item) Then

     ' string already in a list - do nothing

    Else

        ListWithoutDuplicates.Add(item)

    End If

Next
0 голосов
/ 28 августа 2012

Для .NET 2.0

Я столкнулся с другой проблемой, когда решение SLaks не будет работать, то есть, если вы используете .NET 2.0, где метод Contains отсутствует. Итак, вот решение:

If (Array.IndexOf(New String() {"1CE", "2TL", "2PM"}), ToStatus > -1) Then
    'Do something if ToStatus is equal to any of the strings
Else
    'Do something if ToStatus is not equal to any of the strings
End If

VB.NET - альтернатива Array.Contains?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...