2013-01-06 3 views
1

다음과 같은 선택 사례가 있습니다. 문자열에 포함 된 내용을 확인하고 각 경우에 대해 일부 함수를 호출하고 싶습니다. 그러나 여러 조건이 참이면 첫 번째 조건 만 고려하는 것 같습니다. 문제는 약 113 가지의 다른 경우가 있다는 것입니다.VB.NET에서 Select Case True를 선택하십시오.

각 사례에 대해 if 문을 사용해야합니까?

Select Case True 
      Case command.ToUpper.Contains(" S:") 
'Do something 
      Case command.ToUpper.Contains(" C:") 
'Do something 
      Case command.ToUpper.Contains(" *S") 
'Do something 
      Case command.ToUpper.Contains(" *C") 
'Do something 
      Case command.ToUpper.Contains(" CC") 
'Do something 
      Case command.ToUpper.Contains(" SS") 
    End Select 
+0

@Oded completly 다른 것들, 그들은 그래프 데이터에 사용되는 테이블을 반환하는 dynamc SQL 명령을 생성하는 데 사용됩니다 [Select Case True] 중복 가능한 – user1570048

+0

(http://stackoverflow.com/questions/) 794036/select-case-true) –

답변

4

선택 사례가 정의됩니다. 일련의 If 문을 사용하면 효과가 있습니다.

테이블 기반 솔루션 (의사 코드) 고려 :

dim tempCommand as string = command.ToUpper() 
dim match as boolean = true 

while match andalso tempCommand.length > 0 
    select case true 
     Case tempCommand.Contains(" S:") 
      'Do something 
      'then do this  
      tempCommand = tempCommand.replace(" S:","") 
     Case tempCommand.Contains(" C:") 
      'Do something 
      'then do this 
      tempCommand = tempCommand.replace(" C:","") 
     Case tempCommand.Contains(" *S") 
      'Do something 
      'then do this 
      tempCommand = tempCommand.replace(" *S","") 
     Case tempCommand.Contains(" *C") 
      'Do something  
      'then do this 
      tempCommand = tempCommand.replace(" *C","") 
     Case tempCommand.Contains(" CC") 
      'Do something 
      'then do this 
      tempCommand = tempCommand.replace(" CC","") 
     Case command.ToUpper.Contains(" SS") 
      'then do this 
      tempCommand = tempCommand.replace(" SS","")  
     case else match = false 
    end select 
end while 

난 당신이 다른 작업을 수행하는 다양한 기준에 따라 그 있으리라 믿고있어 약

For Each pat In patterns 
    If command contains pattern.pat 
    perform pattern.action 
0

그냥 생각하지만, 무엇을 , 그래서 내가 할 수있는 경우에 대해 완전히 모르는 멋지게 코드를 동적으로 수행하는 방법이 아닌 한 "perform pattern.action"을 수행하는 방법을 확신하지 못합니다.

내 제안은 코드를 더 필요로 할 때를 대비하여 원래의 명령이 손실되지 않도록 임시 보유 변수를 사용하는 이유입니다.