75

我正在更新购物车中的数量,但它抛出了一个序列没有元素的异常。

我什至不知道这意味着什么。起初我以为可能在某处传递了一个空值,但事实并非如此,因为我已经检查过:

序列不包含任何元素 描述:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.InvalidOperationException:序列不包含任何元素

源错误:

第 35 行:var uid = WebSecurity.CurrentUserId;第 36 行:var newqty = Request.Form["Quantity"]; 第 37 行:
OModel.Cart c = (来自数据库中的项目。购物车第 38 行:
其中 item.UserId == uid && item.PartNumber == pnumber && item.OrderId == oid 第 39 行:选择项目).First();

有什么想法可能导致这种情况吗?

4

6 回答 6

140

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

于 2012-08-03T19:05:38.550 回答
17

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

如果您希望查询的结果有时为空,您可能希望使用 FirstOrDefault(),如果集合为空,它将返回 null,而不是抛出异常。

于 2012-08-03T19:07:32.323 回答
5

而不是将.First()其更改为.FirstOrDefault()

于 2012-08-03T19:05:53.823 回答
1

VB中“处理”“序列没有元素”异常的部分答案是测试空

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

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

于 2018-05-07T13:52:00.437 回答
1

该值为null,您必须检查为什么...(除了这里提出的解决方案的实现)

检查硬件连接。

于 2016-07-31T05:01:55.213 回答
0

我有同样的问题,我意识到我已经删除了文件夹中的默认图像,只是更新了特定文件上缺少的媒体

于 2020-06-15T10:25:09.703 回答