Linq之序列化不包含任何元素问题怎么解决?

来源:互联网 发布:博威软件 编辑:程序博客网 时间:2024/04/29 13:01

  今天在开发接口的时候,写了一个查询语句?语句是这样的:

<span style="font-family:Microsoft YaHei;font-size:14px;"><strong>public BasicTeacherEntities QueryOrganizationIdByTeacherId(Guid teacherID)        {            BasicTeacherEntities enOrgnation = this.CurrentDal.LoadItems(o => o.TeacherID == teacherID && o.IsEnabled == 1).First();            return enOrgnation;        }</strong></span>

  当我们用单元测试测试的时候出现了下面的错误:序列化不包含任何元素?这是怎么回事呢?百思不得之后,我上网查找,找出了答案。原来这是linq用法中抛出的异常。

      原因其实是很简单的,使用First代表一定能找到,找不到就抛出异常,但这不是一种错误,我们可以使用try……catch……进行异常的捕获即可,也就是当获取到的集合为空的时候,进行判断进行输出即可,此外还有一个就是FirstOrDefault:不同于First,取序列中满足条件的第一个元素,如果没有元素满足条件,则返回默认值,如果返回的是可以为null的对象,则返回默认值为null,对于不能为null的对象,如int,默认值为0。

  其实如果是真实的场景的情况下,我的数据肯定是有返回值的,因为使用的是单元测试,模拟的时候使用的是一个随机的数据,导致了返回的集合为空,其实单元测试为空的时候不代表我的方法是错误的,但是出现这样的情况的时候最好使用try……catch……进行异常的相关处理。


0 0
原创粉丝点击