リストに特定の値が存在するかどうか、またはIf-else条件で使用できるものを見つけることができるアプローチがVB.NETにあるかどうかを知りたいだけです。私が今していることはこれを使うことです:
If ToStatus = "1CE" Or ToStatus = "2TL" Or ToStatus = "2PM" Then
'Do something
Else
'Do something
End If
これは問題なく機能しますが、将来ToStatus
と比較する文字列が何百もある場合はどうなりますか?悪夢になります!さて、そのような機能が存在する場合、ステートメントに「And」と「Or」を追加するにはどうすればよいですか?
前もって感謝します!
Contains
関数を使用できます。
Dim someList = New List(Of String) From { ... }
If Not someList.Contains(ToStatus) Then
if {"1CE","2TL","2PM"}.Contains(ToStatus)
その後.....終了I
選択したケースを使用できます
select case A
case 5,6,7,8
msgbox "you are in"
case else
msgbox "you are excluded"
end select
Slaksが指摘 のように、Contains
コレクションでenumerable
を使用できます。しかし、読みやすさが損なわれると思います。一部のリストに変数が含まれているかどうかは関係ありません。私の変数がinいくつかのリストであるかどうかを知りたいです。次のような拡張メソッドでcontainsをラップできます。
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
。NET 2.0の場合
SLaksソリューションが機能しない別の問題に遭遇しました。つまり、メソッドContains
が存在しない.NET2.0を使用する場合です。だからここに解決策があります:
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