此问题已在此处有答案:
When to use .First and when to use .FirstOrDefault with LINQ?(14个回答)
去年关闭。
我正在更新购物车中的一个数量,但它抛出了一个序列没有元素异常。
我都不知道那是什么意思。一开始我以为可能有一个null值正在传递,但事实并非如此,因为我已经检查过了:
序列不包含元素描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误及其在代码中的起源的详细信息。
异常详细信息:System.InvalidOperationException:序列不包含任何元素
源错误:
第35行:var uid = WebSecurity.CurrentUserId;第36行:var newqty = Request.Form[“Quantity”];第三十七行:
OModel.Cart c =(来自数据库中的项目。Cart行38:
其中item.UserId == uid && item.PartNumber == pnumber && item.OrderId == oid第39行:();
你知道是什么引起的吗?
6条答案
按热度按时间7lrncoxx1#
如果select返回0行,则
First()
会导致此问题。你要么必须捕获这个异常,要么使用FirstOrDefault()
,如果没有元素,它将返回null
。jm81lzqq2#
您正在使用LINQ的
First()
方法,如果您在空集合上调用该方法,as per the documentation将抛出InvalidOperationException
。如果你期望查询结果有时为空,你可能想使用
FirstOrDefault()
,如果集合为空,它将返回null
,而不是抛出异常。u4dcyp6a3#
将
.First()
改为.FirstOrDefault()
zqry0prt4#
在VB中,对'handle' the 'Sequence has no elements' Exception的部分回答是测试是否为空
其中MyMap是查询的序列,返回空/null。仅供参考
w41d8nur5#
值为null,您必须检查为什么...(除了实施此处提出的解决方案之外)
检查硬件连接。
eufgjt7s6#
我也遇到了同样的问题,但我没有使用First(),而是使用了ToListAsync()。我的问题是我没有将实体类中的属性公开。把它们公开就解决了我的问题。
之前:
之后: