当前位置: 首页 > news >正文

Linq error: Sequence contains no elements

    程序报异常:Sequence contains no elements。首先想到 Oracle 数据库中用到的 Sequence 对象,查之未超限,.NextVal、.CurrVal 都正常。Google 之,异常是 IQuerable<T>.First() 方法报的,当查询的结果集为空时,调用 First() 方法将报此异常,换用 FirstOrDefault() 方法,则不报异常,问题解决。
 
    思考一:在 Google 中搜索时,一开始用的关键字是加双引号的 "Sequence contains no element",这是同事从电话里告知的异常信息,用这个关键字搜不到有价值的信息;当我在现场再现了这个异常后,直接把异常文本复制到 Google 中搜索,此时关键字是加双引号的 "Sequence contains no elements",结果一下子就定位到了问题的所在,而两次仅仅是关键字“element”和“elements”单复数的差异。

    这很出乎我的意料,按通常的思路,“element”应比“elements”搜到更多的结果,包含“elements”的网页应该是“element”的子集。难道 Google 有英语的语法分析功能?
 
    思考二:程序中调用 void 的方法时,经常需要知道方法是否成功执行,若不成功,需要知道不成功的原因(通常是异常消息)。比如要执行的方法叫 FooA(),FooA 的一种实现办法是在不成功时抛出异常,调用方捕捉到异常自然就知道 FooA 执行失败,也得到了失败的原因。但我经常用的方式是不抛出异常,而是用布尔返回值 true、false 表示成功与否,加一个 out string 参数携带失败时的消息。这样做的好处有二:一是避免了处理异常时要消耗很多的资源,二是在多次循环其前次处理失败要求能继续进行后续处理,且调用方没有异常处理代码时,避免了程序一遇到异常就跳出执行。看到 IQuerable<T>.First 和 FirstOrDefault 方法,我想也可以多写个 FooAOrDefault 方法,让调用方想处理异常时调用 FooA,不想处理异常或避免被异常影响执行时调用 FooAOrDefault 方法。



相关文章:

  • asp.net mvc中ckeditor+ckfinder的配置方法
  • 详细图解发布aps.net mvc网站项目到IIS的方法
  • 在windows server2003 iis6部署mvc3
  • Linq to SQlite的使用
  • 去掉链接a标签外的虚线框(ff,ie)
  • IE6、IE7、IE8、Firefox兼容性问题
  • 搜集整理的一个c#.net的加密解密的类
  • The server has encountered an error while loading an application during the processing of your reque
  • asp连接mysql
  • ASP+MYSQL:ODBC 驱动程序不支持所需的属性
  • ASP解决方案-Microsoft JET Database Engine(0x80004005)未指定错误
  • 编辑器 img src问题
  • IIS出现server application error
  • IIS7错误:“由于扩展配置问题而无法提供您请求的页面”解决
  • Ajax的post方法的使用
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • 4个实用的微服务测试策略
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • js中forEach回调同异步问题
  • Markdown 语法简单说明
  • markdown编辑器简评
  • ng6--错误信息小结(持续更新)
  • Octave 入门
  • React组件设计模式(一)
  • vue数据传递--我有特殊的实现技巧
  • 开源SQL-on-Hadoop系统一览
  • 排序算法之--选择排序
  • 深入浅出webpack学习(1)--核心概念
  • 网页视频流m3u8/ts视频下载
  • FaaS 的简单实践
  • ​如何在iOS手机上查看应用日志
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #162 (Div. 2)
  • (八十八)VFL语言初步 - 实现布局
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (蓝桥杯每日一题)love
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (万字长文)Spring的核心知识尽揽其中
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • .NET 发展历程
  • .Net 路由处理厉害了
  • .NET 药厂业务系统 CPU爆高分析
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • .net与java建立WebService再互相调用
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • /*在DataTable中更新、删除数据*/
  • @DependsOn:解析 Spring 中的依赖关系之艺术
  • [3300万人的聊天室] 作为产品的上游公司该如何?
  • [Android]竖直滑动选择器WheelView的实现