0

次のエラーが表示されます。

無効なキャスト例外が発生しました タイプ 'System.Data.Linq.DataQuery`1[WindowsApplication1.DesignSpec]' のオブジェクトをタイプ 'WindowsApplication1.DesignSpec' にキャストできません

次のテストコードで:

Dim prodSku As String = "11037"
Dim designSpec As DesignSpec = From row In dbLocal.DesignSpecs Where row.Name = prodSku Select row

私は高低を検索し、多数のオプションを試しましたが、明らかに正しいオプションではありません. 正しい構文を使用するのに役立つ助けがあれば、大歓迎です。

よろしくお願いいたします。ご協力いただきありがとうございます。

PS: ちょっと安っぽく聞こえるかもしれませんが、これが私の最初の投稿です (適切に投稿できていることを願っています)。私は信じられないほど役に立った多くのスレッドをたどりましたが、評判ポイントがないため、賛成票を投じることはできません-本当に! これが十分に良い質問である場合、おそらく誰もが投票して、十分な評判ポイントを私に与えてくれるので、他のみんなの支援に恩返しをすることができます. 再度、感謝します!

4

2 に答える 2

2

Linq クエリは (DesignSpecの) コレクションを返しますが、それを単一のインスタンスに割り当てようとしています。

単一のインスタンスを抽出するコレクションにフィルターを適用する必要があります。たとえばSingle()、クエリSingleOrDefault()の予想される出力に基づいて最も意味のあるものに応じて、、、、などですFirst()FirstOrDefault()

バリアントを使用するSingleと、クエリがたまたま複数のインスタンスを返す場合に例外が発生することに注意してください。一方、Firstバリアントは最初に見つかったインスタンスを返すだけなので、この問題に対処できます。

于 2013-09-04T05:39:38.860 に答える
1

実際にはまだクエリを実行していません。あなたが行ったことは、クエリを実行する方法を説明しています。

実際にクエリを実行するには、次を使用します。

  • FirstOrDefault()最初に一致した要素または null を返す
  • SingleOrDefault()一致する要素または null を返す (これにより、一致する要素が 1 つだけであることが確認されます)。一致する要素が複数ある場合、例外がスローされます
  • First()最初に一致する要素を返すか、何も見つからない場合は例外をスローします
  • Single()一致する要素を返すか、何も見つからないか複数見つかった場合に例外をスローします。
于 2013-09-04T05:42:24.643 に答える