gpt4 book ai didi

vb.net - 将 Case 语句与表中的 Int 条目一起使用

转载 作者:行者123 更新时间:2023-12-02 02:26:34 25 4
gpt4 key购买 nike

比较 case 语句中表中 Int 条目的最佳方法是什么?

使用 SQL Server 2008 R2、Visual Basic Express 和 LINQ to SQL。

我试过的代码不起作用:

Private Sub UpdateSetOpt()

Dim db = New ACEDataContext
Dim SRM = From q In db.Settings
Where q.SettingID = frmMain.CurrentSID
Select q.RollMethod

Select Case SRM
Case 1
rbStandard.Checked = True
Case 2
rbProfession.Checked = True
Case 3
rbSpecies.Checked = True
Case 4
rbRandom.Checked = True
Case Else
rbStandard.Checked = False
rbProfession.Checked = False
rbSpecies.Checked = False
rbRandom.Checked = False
End Select

End Sub

最佳答案

SRM 不是 Integer,因为您的 From 查询返回项目集合。要获得第一个,请使用 Single():

Dim SRM = (From q In db.Settings
Where q.SettingID = frmMain.CurrentSID
Select q.RollMethod).Single()

如果查询实际返回多个值,上述代码将失败;你需要使用 First 而不是 Single 然后。如果查询返回 值,两者都将失败。在这种情况下,可以改用 FirstOrDefault(但可能不适合您的情况)。

除此之外,您的Select Case 是代码异味的标志。您应该创建一个包含所有复选框的数组并使用整数映射到其中:

Dim checks As CheckBox() = New CheckBox() { _
rbStandard, rbProfession, rbSpecies, rbRandom }

' Unset all checkboxes:
For Each check In checks
check.Checked = False
End For

If SRM > 0 AndAlso SRM <= checks.Length Then
checks(SRM - 1).Checked = True
End If

关于vb.net - 将 Case 语句与表中的 Int 条目一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5679885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com