【问题标题】:Handling 'Sequence has no elements' Exception [duplicate]处理“序列没有元素”异常
【发布时间】:2012-08-03 19:03:12
【问题描述】:

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

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

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

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

来源错误:

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

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

【问题讨论】:

  • @driss 我一直在使用 FirstOrDefault() 的时候应该使用它,但是当我想学习如何更新时,我找到了一个博客(与我学会添加和删除的博客相同) ) - 他使用 First 而不是 FirstOrDefault(),所以我使用了它。但是 FirstOrDefault() 抛出另一个异常。所以我不确定应该使用哪一个,或者在这种情况下是否重要。

标签: c# .net linq entity-framework ado.net


【解决方案1】:

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

【讨论】:

  • 谢谢。这就说得通了。我想知道,为什么它会返回 NULL - 即使在我检查它确实存在于数据库中之后?您知道更新表格中的项目的任何其他方法吗?
  • 您可以创建存储过程,将其映射到 Linq 并调用它。但我不明白为什么这不起作用,只要所有参数都可以。您可以尝试使用 Sql Profiler 查看实际执行的 SQL 命令。这应该有助于找出问题所在。
  • 如果它确实存在于数据库中并且它没有被返回,那么它不满足条件。你使用 UserId == uid && PartNumber == pnumber && OrderId == oid 都是真的吗?你在检查正确的类型吗?
  • 它返回 null 因为 null 是默认值。 “default(object)”是一个返回 null 的 C# 表达式。 "default(int)" 返回 0。
  • 就我而言,我使用 Single,所以我使用 SingleOrDefault,谢谢!。
【解决方案2】:

您正在使用 linq 的 First() 方法,如果您在空集合上调用它,as per the documentation 会抛出 InvalidOperationException。

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

【讨论】:

    【解决方案3】:

    .First()改为.FirstOrDefault()

    【讨论】:

      【解决方案4】:

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

      检查硬件连接。

      【讨论】:

        【解决方案5】:

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

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

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

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            猜你喜欢
            • 2016-10-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-08-26
            • 1970-01-01
            • 1970-01-01
            • 2021-11-20
            • 1970-01-01
            相关资源
            最近更新 更多