Question

Why doesn't the following code work?

Private Function resolveSiteName(ByVal plantName As String, ByVal siteName As String) As Integer
    Dim siteId As Integer = Nothing
    Dim fullName As String = plantName & siteName
    Select Case fullName
        Case fullName.Contains("Example" And "Example2" And "Example3")
            siteId = 0
    End Select
    Return siteId
End Function

I'm guessing my Select Case fullName is wrong, because when debugging it, the conditions are met and it just skips over assigning the siteId.

I also tried just this

Case fullName.Equals("Exactly what full name is")

just to test to see if that would work...and it still skipped over the assigning part.

What am I missing here?

Était-ce utile?

La solution 2

Note that this would not even compile if you'd use an If-clause(which is more appropriate here):

If fullName.Contains("Example" And "Example2" And "Example3") Then
    ' this doesn't compile since you cannot concat a string with And
    ' you want to check if fullName equals to one of the strings anyway
    siteId = 0
End If

If you want to check multiple items at once, define a collection, add all to it and then use Contains:

Dim siteNames = { "Example", "Example2", "Example3" }
If siteNames.Contains(fullName) Then
    siteId = 0
End If

Autres conseils

This should work too:

Select Case fullName
   Case "Example", "Example2", "Example3"
      siteId = 0
End Select

This solves your problem:

Select Case True
    Case fullName.Contains("Example")
        siteId = 0
End Select

Or for your second try:

Select Case fullName
    Case "Exactly what full name is"
        siteId = 0
End Select    

Try this:

Select Case fullName
   Case "Example"
      siteId = 0
   Case "Example2"
      siteId = 0
   Case "Example3"
      siteId = 0
End Select

Replace

Select Case fullName

with

Select Case True
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top