【发布时间】:2013-04-14 05:29:51
【问题描述】:
我到处搜索,找不到答案。每个示例要么有一个数据网格视图,要么在 Select 处停止。我需要将 DataContext 结果作为变量存储在 VB 中。在前面的代码中,我使用客户姓名的下拉列表填充 ComobBox。然后,当用户从组合框列表中选择客户名称时,我想:
Private Sub ComboBox1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
Dim dbmanex As New Manex_LINQDataContext
Dim dbPhone = From c In dbmanex.CUSTOMERs
Where c.CUSTNAME = Me.ComboBox1.Text
Select c.PHONE
Me.PhoneTextBox.Text = dbPhone
End Sub
PhoneTextBox.Text 只是空白。任何见解将不胜感激。
由 Kirill Bestemyanov 解决:
Private Sub ComboBox1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
Dim dbmanex As New Manex_LINQDataContext
Dim dbPhone = From c In dbmanex.CUSTOMERs
Select c.PHONE
Me.PhoneTextBox.Text = dbPhone.Single()
End Sub
【问题讨论】:
-
由于 ComboBox 是从 DataContext 填充的,因此假设客户存在于上下文中可能是安全的。但是,我认为需要注意的是,如果查询返回 0 或 2 个或更多结果,则调用
Single()将引发异常。我通常更喜欢使用SingleOrDefault(),因为如果找到 0 个匹配项,它将返回类型的默认值(但如果找到 2 个或更多匹配项,它将抛出异常)。 -
这取决于要求。我更喜欢该应用程序抛出异常,但不要将错误的数据保存到数据库。
标签: sql vb.net linq variables datacontext