SRM
не является Integer
, поскольку ваш запрос From
возвращает коллекцию элементов.Чтобы получить только первое, используйте Single()
:
Dim SRM = (From q In db.Settings
Where q.SettingID = frmMain.CurrentSID
Select q.RollMethod).Single()
Если запрос фактически возвращает более одного значения, приведенный выше код завершится неудачей;тогда вам нужно использовать First
вместо Single
.И то и другое завершится неудачей, если запросом будет возвращено значение no .В этом случае вместо этого можно использовать 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