【问题标题】:Combox and LINQ - Visual BasicCombox 和 LINQ - Visual Basic
【发布时间】:2018-04-10 17:00:07
【问题描述】:

我需要创建一个 LINQ 语句,该语句使用用户从组合框中选择的国家/地区,并在列表框中显示数据库中的城市。附件是我目前所拥有的。国家众多,因此使用 if 语句是行不通的。

Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
    Dim myQ1 = From X In CustomersDataset.Customers Where

    X.Country = ComboBox1.SelectedItem Select X.City 

    '(X.Country = "France" Select X.City)-only shows city options for France obviously.


    lstCity.DataSource = myQ1.ToList
End Sub

【问题讨论】:

  • 试试 X.Country = ComboBox1.SelectedValue
  • 仍然收到构建错误,谢谢
  • 你的构建错误是什么?
  • 查看底部的错误列表。
  • Microsoft.VisualBasic.dll 中发生了“System.InvalidCastException”类型的未处理异常附加信息:重载解析失败,因为无法使用以下参数调用公共“=”:“公共共享运算符 =( a As String, b As String) As Boolean: 参数匹配参数 'b' 不能从 'DataRowView' 转换为 'String'。

标签: vb.net linq


【解决方案1】:

ComboBox SelectedItem 属于 Object 类型,是它的绑定对象。因此,您必须将 DataRowView 转换为字符串,以便可以在您的 linq 查询中进行比较:

Dim strSelectedItemValue As String = CType(ComboBox1.SelectedItem, DataRowView).Item("ReplaceWithTheColumnNameOfTheCountryField")

Dim myQ1 = From X In CustomersDataset.Customers 
Where X.Country = strSelectedItemValue
Select X.City

lstCity.DataSource = myQ1.ToList
lstCity.DataBind()

【讨论】:

  • 如何让结果显示在列表框上?我尝试了 lstCity.DataSource = myQ1.ToList,但是,它不适用于此解决方案
  • 我编辑了答案以显示您需要调用 .DataBind()。如果这对您有帮助,请不要忘记接受这个作为答案。
  • 我仍然没有找到解决方案,因为发生了数据绑定错误
  • 应该作为另一个问题发布。我很确定“询问”的问题(真的没有问题)已经解决。如果您确实提出另一个问题,我会提供错误消息和确切的失败代码行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-13
  • 1970-01-01
  • 2010-11-05
  • 2015-09-06
相关资源
最近更新 更多