我正在尝试从SQL Server数据库中获取数据。
我的数据库中有一个名为Standard
的表。它有三列StandardID
,StandardName
和Description
。
我有一个组合框,我在其中填充StandardName
以下是代码:
Using db As New SchoolDBEntities
ComboSelectStandardToEdit.DataSource = db.Standards.ToList()
ComboSelectStandardToEdit.ValueMember = "StandardID"
ComboSelectStandardToEdit.DisplayMember = "StandardName"
End Using
现在我有两个名为txtStandardName
和txtDescription
的文本框。
我想根据组合框中选定的StandardName
来填充这2个文本框的值。
这是我尝试过的代码:
Using db As New SchoolDBEntities
Dim standard = From s In db.Standards
Where s.StandardId = CInt(ComboSelectStandardToEdit.SelectedValue)
Select s
txtStandardName.Text = CType(standard, Standard).StandardName
End Using
但不幸的是我收到了错误:
无法转换'System.Data.Entity.Infrastructure.DbQuery
类型的对象`1[EF_WinForms_VB.Standard]' to type 'EF_WinForms_VB.Standard'.
答案 0 :(得分:2)
尝试使用
Dim standard = (From s In db.Standards
Where s.StandardId = CInt(ComboSelectStandardToEdit.SelectedValue)
Select s)
.FirstOrDefault
txtStandardName.Text = standard.StandardName
您的Linq查询当前正在撤回可能包含多个条目的投影。通过明确请求投影的第一个对象,您无需在访问它的值之前转换标准。
答案 1 :(得分:1)
尝试使用
Dim standard =(来自s in db.Standards.AsEnumerable 其中s.StandardId = Convert.ToInt32(ComboSelectStandardToEdit.SelectedValue) 选择s) .FirstOrDefault
txtStandardName.Text = standard.StandardName
希望它有所帮助。