.net 处理“序列没有元素”异常[重复]

4si2a6ki  于 2023-06-25  发布在  .NET
关注(0)|答案(6)|浏览(109)

此问题已在此处有答案

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行:();
你知道是什么引起的吗?

7lrncoxx

7lrncoxx1#

如果select返回0行,则First()会导致此问题。你要么必须捕获这个异常,要么使用FirstOrDefault(),如果没有元素,它将返回null

jm81lzqq

jm81lzqq2#

您正在使用LINQ的First()方法,如果您在空集合上调用该方法,as per the documentation将抛出InvalidOperationException
如果你期望查询结果有时为空,你可能想使用FirstOrDefault(),如果集合为空,它将返回null,而不是抛出异常。

u4dcyp6a

u4dcyp6a3#

.First()改为.FirstOrDefault()

zqry0prt

zqry0prt4#

VB中,对'handle' the 'Sequence has no elements' Exception的部分回答是测试是否为空

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

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

w41d8nur

w41d8nur5#

值为null,您必须检查为什么...(除了实施此处提出的解决方案之外)
检查硬件连接。

eufgjt7s

eufgjt7s6#

我也遇到了同样的问题,但我没有使用First(),而是使用了ToListAsync()。我的问题是我没有将实体类中的属性公开。把它们公开就解决了我的问题。
之前:

string name {get; set;}

之后:

public string name {get; set;}

相关问题