我正在将一些VB6逻辑转换为C#并遇到以下SELECT/CASE语句.
Select Case ZipCode
Case 1067 To 19417, 35075 To 35085, 48455 To 48465, 55583 To 55596, 67480 To 67551, 75392, 85126, _
93047 To 93059, 21217 To 21739, 35091 To 35096, 48480, 55606 To 55779, 67655 To 67707, 76726 To 76835, _
85221 To 87679, 94315 To 94419, 22844 To 25799, 35102, 48488, 56154 To 56254, 67731 To 67759, 76855 To 76889, _
87719 To 88339, 94428 To 94437, 25868, 35112, 48499 To 48531, 56271, 67824 To 67829, 77761, …Run Code Online (Sandbox Code Playgroud) 有没有办法在VB.net中使用Select Case语句开头?或者我必须使用长的elseif?例:
If text.StartsWith("/go") then
elseif test.StartsWith("/stop")
elseif test.StartsWith("/continue")
End If
Run Code Online (Sandbox Code Playgroud)
但相反的是:
Select Case text
Case text.StartsWith("/go")
Case text.StartsWith("/stop")
Case text.StartsWith("/continue")
Case Else
End Select
End Sub
Run Code Online (Sandbox Code Playgroud) 假设您想要按以下方式执行操作:
SELECT CASE
WHEN (SELECT COUNT(id) FROM table WHERE column2 = 4) > 0
THEN 1 ELSE 0 END
Run Code Online (Sandbox Code Playgroud)
当表中有一行或多行时,基本上只返回1,否则返回0.必须有一种语法正确的方法来做到这一点.可能是什么?谢谢!
我希望我的一个案例是一个动态字符串,因为在我的表中这些值部分改变,除了开头的代码"2061",所以如何使我的代码做类似于我在查询时查找的内容" ...像'2061%'这里是我的代码
Function GetResponse(val As String) As String
Select Case val
Case "2061"
Return "Opted Out"
Case "00"
Return ""
Case Else
Return "Other"
End Select
End Function
Run Code Online (Sandbox Code Playgroud) 我希望只用一个案例来执行一个选择案例 - 案例不等于"P","Ev"或"Af".
这就是我到目前为止所拥有的.
Select Case Range("my_range").Offset(0, column_offset).Value
Case Not "P", "Ev", "Af"
'my code
End Select
Run Code Online (Sandbox Code Playgroud)
该案例可以等于50个不同的值,我希望'my code对所有这些值执行相同的操作(下),除非结果是P,Ev或Af.
我也试着Not "P", Not "Ev", Not "Af"用替换一起,使用Or,但无济于事.
每次响应都是:
运行时错误'13':类型不匹配.
我知道我可以用if语句替换它......
If Range("my_range").Offset(0, column_offset).Value <> "P" And Range("my_range").Offset(0, column_offset).Value <> "Ev" And Range("my_range").Offset(0, column_offset).Value <> "Af" Then
'my code
End if
Run Code Online (Sandbox Code Playgroud)
但如果可以的话,我更愿意使用Select Case选项.
有人想过吗?
非常感谢
编辑
我还应该说我确实尝试过使用过
Select Case Range("my_range").Offset(0, column_offset).Value
Case "P", "Ev", "Af"
Exit Select
Case Else
'my code
End Select
Run Code Online (Sandbox Code Playgroud)
但错误信息:
编译错误:预期:Do或For或Sub或Function或Property …
<%
i=2
Select Case i
Case 1,2,3,4,5,7,8,9,10
response.write("Grade A")
Case 11,12,13,14,15,16,17,18,19,20
response.write("Grade B")
Case 21,22,23,24,25,26,27,28,29,30
response.write("Grade C")
Case 31,32,33,34,35,36,37,38,39,40
response.write("Grade D")
Case Else
response.write("Invalid")
End Select
%>
Run Code Online (Sandbox Code Playgroud)
如何用更小的语句替换 1,2,3..。我试过把 1 到 10 但它显示错误。
感谢任何帮助,谢谢!
如何在下面的选择案例中添加Not条件.
<>适用于单个值,"To"适用于Range,但值是特定值,不存在一系列数字.在这种情况下是否可以使用select case,或者我必须切换到if-else.例如:我不希望在值为0和3时执行大小写
Select value
case 0,1,2,3
End Select
Run Code Online (Sandbox Code Playgroud) 所以我在Vb6中有类似的东西;
Select case Case
case "Case0"
...
case "Case1"
if Condition Then
Exit Select
End If
*Perform action*
case "Case2"
...
End Select
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,我Exit Select抛出错误Expected: Do or For or Sub or Function or Property.我知道,不漂亮.我应该使用其他东西吗?我可以使用if语句而不是提前退出案例,但这需要重复的代码,我想避免.任何帮助将非常感激.
更新
试图改变Exit Select到End Select和得到了错误End Select without Select Case.它肯定在a Select Case和a之内End Select.
我正在使用以下查询在Oracle 11g (11.2.0.3.0) 中创建视图。
CREATE OR REPLACE FORCE VIEW V_DOCUMENTS_LIST
(
ID_DOC,
ATTACHMENTS_COUNT,
TOTAL_DIMENSION,
INSERT_DATE,
ID_STATE,
STATE,
ID_INSTITUTE,
INSTITUTE,
HASJOB
)
AS
SELECT D.ID_DOC,
COUNT (F.ID_FILE) AS ATTACHMENTS_COUNT,
CASE
WHEN SUM (F.DIMENSION) IS NULL THEN 0
ELSE SUM (F.DIMENSION)
END
AS TOTAL_DIMENSION,
D.INSERT_DATE,
D.ID_STATE,
S.STATE_DESC AS STATE,
D.ID_INSTITUTE,
E.NAME AS INSTITUTE,
CASE
WHEN EXISTS (SELECT D.ID_DOC FROM JOB) THEN 'true'
ELSE 'false'
END
AS HASJOB
FROM DOCUMENTS D
LEFT JOIN FILES F ON D.ID_DOC = F.ID_DOC
JOIN STATES …Run Code Online (Sandbox Code Playgroud) 这不是这个问题的重复:VB.NET Stacking Select Switch Statements就像在Switch C#/ Java中一样.这里提供的答案没有回答我的问题.答案就是说我已经知道VB .Net有一个自动中断.我问是否有任何解决方法.
在C中,可以执行以下操作:
int i = 1;
switch (i) {
case 1 :
//Do first stuff
break;
case 2 :
//Do second stuff
//Fall Through
case 3 :
//Do third stuff
break;
}
Run Code Online (Sandbox Code Playgroud)
基本上
i是1,app会做第一件事.i是2,它将做第二和第三个东西.i是3,它将只做第三个东西.由于Select caseVB .Net 中每个语句的结尾都有自动中断,有没有人知道如何在VB .Net中实现这一点?
以一种漂亮而美丽的方式,我的意思是......
select-case ×10
vb.net ×4
sql ×2
vb6 ×2
asp-classic ×1
c ×1
c# ×1
count ×1
excel ×1
excel-vba ×1
exit ×1
if-statement ×1
oracle ×1
sql-server ×1
subquery ×1
vba ×1
vbscript ×1