我正在我的购物车中更新一个数量,但是它抛出的序列没有元素的异常。
我甚至不知道那是什么意思。起初,我认为可能在某个地方传递了一个空值,但事实并非如此,因为我已经检查过:
序列不包含元素描述:在执行当前web请求期间发生了未处理的异常。请查看堆栈跟踪以获得有关错误的更多信息,以及它起源于代码的位置。 异常详细信息: System.InvalidOperationException:序列不包含任何元素 源错误: 第35行: var uid = WebSecurity.CurrentUserId;第36行: var newqty = Request.Form"Quantity";第37行: OModel.Cart c=(来自database.Carts第38行中的项): 其中item.UserId == uid && item.PartNumber == pnumber && item.OrderId == item 39: select item).First();
有什么原因吗?
发布于 2012-08-03 11:05:38
如果选择返回0行,则First()
将导致此情况。要么必须捕获该异常,要么使用FirstOrDefault()
,在没有元素的情况下返回null。
发布于 2012-08-03 11:07:32
您正在使用linq的第一个()方法,如果在一个空集合上调用该方法,根据文件将抛出一个InvalidOperationException。
如果有时期望查询结果为空,则可能需要使用FirstOrDefault(),如果集合为空,则返回null,而不是抛出异常。
发布于 2012-08-03 11:05:53
而不是.First()
,将其更改为.FirstOrDefault()
https://stackoverflow.com/questions/11801769
复制