我有一些 IEnumberable
项目集合。我使用 .Single()
在集合中查找特定对象。
我选择使用 Single()
因为应该只有一个特定的项目。但是,如果不存在,那么我需要创建它并将其添加到集合中。
我的问题是,如果没有与谓词匹配的项目或有多个项目,Single()
会抛出相同的错误。我的想法是将 Single()
调用放在 try 中并捕获异常,添加项目,然后继续。但是,由于这两种情况都会抛出 InvalidOperationException
,我如何判断是由于没有项目还是有多个项目?
我知道我可以使用 First()
但这并没有强制执行应该只有一个的想法(无需做额外的工作)。
我也可以在 Single()
调用之前使用 Count()
,但这似乎破坏了 Single()
的意义
最佳答案
你想要的是SingleOrDefault()
“或默认值”实际上意味着它返回 null(对于引用类型)或任何默认值对于非引用类型。您需要新建一个对象来取代它。
关于c# - 0 个或多个项目的 LINQ Single() 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13498419/