开发者

VB.NET If-Else in List

I just want to know if there's an approach in VB.NET that can find if a specific value exist on a list or something 开发者_JAVA百科which can use in my If-else condition. What I'm doing now is to use this:

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

This works fine, but how if I have hundreds of string to compare to ToStatus in the future? It will be a nightmare! Now, if such functionality exists, how can I add "And" and "Or" in the statement?

Thanks in advance!


You can use the Contains function:

Dim someList = New List(Of String) From { ... }
If Not someList.Contains(ToStatus) Then


You can do the following:

If {"1CE","2TL","2PM"}.Contains(ToStatus) Then
    ' ...
End If


Like Slaks pointed out, you can use Contains on an enumerable collection. But I think readability suffers. I don't care if some list contains my variable; I want to know if my variable is in some list.

You can wrap contains in an extension method like so:

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

Then call like this:

If ToStatus.In("1CE","2TL","2PM") Then


you may use select case

select case A
   case 5,6,7,8
       msgbox "you are in"
   case else
       msgbox "you are excluded"
end select


For .NET 2.0

I came across another problem where SLaks solution won't work, that is if you use .NET 2.0 where method Contains is not present. So here's the solution:

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 - Alternative to Array.Contains?


Remove duplicates from the list

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜