VB.net中的任何IN运算符是否与SQL中的运算符类似

Ala*_*laa 13 .net vb.net operators

是否有任何功能或运营商:

        If RoleName in ( "Val1",  "Val2" ,"Val2" ) Then
        'Go
    End If
Run Code Online (Sandbox Code Playgroud)

代替:

    If RoleName = "Val1" Or RoleName = "Val2" Or RoleName = "Val2" Then
        'Go
    End If
Run Code Online (Sandbox Code Playgroud)

Lar*_*ech 19

尝试使用数组,然后您可以使用Contains扩展:

Dim s() As String = {"Val1", "Val2", "Val3"}
If s.Contains(RoleName) Then
  'Go      
End If
Run Code Online (Sandbox Code Playgroud)

或者没有申报行:

If New String() {"Val1", "Val2", "Val3"}.Contains(RoleName) Then
  'Go
End If
Run Code Online (Sandbox Code Playgroud)

从OP,如果Contains扩展名不可用,您可以尝试:

If Array.IndexOf(New String() {"Val1", "Val2", "Val3"}, RoleName) > -1 Then
  'Go
End If
Run Code Online (Sandbox Code Playgroud)

  • @Ala:也许你错过了文件顶部的import语句:`Imports System.Linq`? (3认同)
  • @Ala然后,您的项目-引用列表中可能没有对System.Linq的引用。 (2认同)

Met*_*ght 15

您可以使用LarsTech所示的Contains,但添加In扩展方法也很容易:

Public Module Extensions

    <Extension()> _
    Public Function [In](Of T)(value As T, ParamArray collectionValues As T()) As Boolean
        Return collectionValues.Contains(value)
    End Function

End Module
Run Code Online (Sandbox Code Playgroud)

你可以像这样使用它:

If RoleName.In("Val1", "Val2", "Val3") Then
    'Go
End If
Run Code Online (Sandbox Code Playgroud)


Bot*_*000 14

您还可以使用Select..Case声明:

Select Case RoleName 
    Case "Val1", "Val2", "Val3"
        ' Whatever
End Select
Run Code Online (Sandbox Code Playgroud)

  • +1的可读性,即使它与其他答案相比有点无聊:) (4认同)