本文主要是介绍Linq之序列化不包含任何元素问题怎么解决?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
今天在开发接口的时候,写了一个查询语句?语句是这样的:
<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……进行异常的相关处理。
这篇关于Linq之序列化不包含任何元素问题怎么解决?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!