关于c#:处理’序列没有元素’异常

Handling 'Sequence has no elements' Exception

我正在更新我的购物车中的数量,但它抛出的序列没有元素的例外。

我不知道这是什么意思。起初我以为可能有一个空值被传递到某个地方,但事实并非如此,因为我检查过:

Sequence contains no elements Description: An unhandled exception
occurred during the execution of the current web request. Please
review the stack trace for more information about the error and where
it originated in the code.

Exception Details: System.InvalidOperationException: Sequence
contains no elements

Source Error:

Line 35: var uid = WebSecurity.CurrentUserId; Line 36:
var newqty = Request.Form["Quantity"]; Line 37:
OModel.Cart c = (from item in database.Carts Line 38:
where item.UserId == uid && item.PartNumber == pnumber && item.OrderId
== oid Line 39: select item).First();

你知道是什么引起的吗?


如果您的选择返回0行,则First()将导致此问题。您要么必须捕获该异常,要么使用FirstOrDefault(),如果没有元素,它将返回空值。


您使用的是Linq的First()方法,根据文档,如果在空集合上调用它,则该方法将引发InvalidOperationException。

如果您希望查询结果有时为空,则可能希望使用FirstOrDefault(),如果集合为空,则返回空值,而不是引发异常。


代替.First()改为.FirstOrDefault()


"handle"的部分答案"sequence has no elements"在VB中的异常是测试是否为空

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

其中mymap是返回空/空的查询序列。供参考


值为空,必须检查原因…(除了执行这里提出的解决方案之外)

检查硬件连接。