LINQ Single()0或多个项目的例外
我有一些IEnumberable
项目集合。 我使用.Single()
来查找集合中的特定对象。
我选择使用Single()
因为只应该有一个特定的项目。 但是,如果不存在,那么我需要创建它并将其添加到集合中。
我的问题是如果没有与谓词匹配的项目或者有多个项目, Single()
会抛出相同的错误。 我的想法是将Single()
调用放在try中并捕获exception,添加项目,然后继续。 但是,由于两种情况都会抛出InvalidOperationException
,如何判断它是否由于没有项目或多项?
我知道我可以使用First()
但这并没有强制说应该只有一个(没有做额外的工作)。
我也可以在Single()
调用之前使用Count()
,但这似乎只是破坏了Single()
的要点
你想要的是SingleOrDefault()
“或default”实际上意味着它返回null(对于引用类型)或者对于非引用类型的默认值。 你需要新建一个对象来代替它。
我不建议在这种情况下使用try / catch,因为使用exception来做出逻辑决策是非常昂贵的。
我建议使用SingleOrDefault()
,并检查结果是否为null。 如果是。 做你的创作。