【问题标题】:VB LINQ to SQL as variableVB LINQ to SQL 作为变量
【发布时间】: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


【解决方案1】:

您应该具体化您的查询。

Me.PhoneTextBox.Text=dbPhone.Single();

当您调用 Single() 时,您的查询将调用 db 并从中获取值。

【讨论】:

  • 已解决!是的!谢谢你,谢谢你,谢谢你!我知道还有一百个人会感谢你这个超级简单的答案。感谢您抽出宝贵时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多