web-dev-qa-db-ja.com

「シーケンスには要素がありません」例外の処理

カート内の数量を更新していますが、Sequenceには要素の例外がありません。

そして、それがどういう意味なのかわかりません。最初はどこかでnull値が渡されているかもしれないと思っていましたが、そうではありませんでした。

シーケンスに要素が含まれていません説明:現在のWeb要求の実行中に未処理の例外が発生しました。エラーの詳細とコードのどこで発生したかについては、スタックトレースを確認してください。

例外の詳細:System.InvalidOperationException:シーケンスに要素が含まれていません

ソースエラー:

35行目:var uid = WebSecurity.CurrentUserId; 36行目:var newqty = Request.Form ["Quantity"]; 37行目:
OModel.Cart c =(database.Carts行38のアイテムから:
where item.UserId == uid && item.PartNumber == pnumber && item.OrderId == oid Line 39:select item).First();

これを引き起こしている可能性のあるアイデアはありますか?

42
Arrow

選択が0行を返す場合、First()が原因です。その例外をキャッチするか、要素がない場合にnullを返すFirstOrDefault()を使用する必要があります。

85
Varius

LinqのFirst()メソッドを使用しています。このメソッドは、空のコレクションで呼び出すと ドキュメントによる InvalidOperationExceptionをスローします。

クエリの結果が時々空になることが予想される場合は、例外をスローする代わりに、コレクションが空の場合にnullを返すFirstOrDefault()を使用する可能性があります。

13
Marty Dill

.First()の代わりに.FirstOrDefault()に変更します

6
c0deNinja

「シーケンス」には「要素がありません」という「ハンドル」に対する回答の一部[〜#〜] vb [〜#〜]の例外は空をテストすることです

If Not (myMap Is Nothing) Then
' execute code
End if

ここで、MyMapは空/ nullを返すクエリシーケンスです。ご参考までに

1
ransems

値がnullであるため、理由を確認する必要があります...(ここで提案されているソリューションの実装に加えて)

ハードウェアの接続を確認してください。

1
user1012506