0

SQL Server データベースからデータを取得しようとしています。

データベースで呼び出されるテーブルがありStandardます。StandardIDStandardName、および の3 つの列がありDescriptionます。

値を入力するコンボボックスがありますStandardName

コードは次のとおりです。

Using db As New SchoolDBEntities
    ComboSelectStandardToEdit.DataSource = db.Standards.ToList()
    ComboSelectStandardToEdit.ValueMember = "StandardID"
    ComboSelectStandardToEdit.DisplayMember = "StandardName"
End Using

と という 2 つのテキスト ボックスが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'.

4

2 に答える 2

2

使ってみて

Dim standard = (From s In db.Standards
    Where s.StandardId = CInt(ComboSelectStandardToEdit.SelectedValue)
    Select s)
    .FirstOrDefault

txtStandardName.Text = standard.StandardName

あなたの Linq クエリは現在、複数のエントリを含む可能性のあるプロジェクションを返しています。プロジェクションの最初のオブジェクトを明示的に要求することで、その値にアクセスする前に標準をキャストする必要がなくなります。

于 2013-07-29T13:02:32.717 に答える