c# - 0 个或多个项目的 LINQ Single() 异常

标签 c# linq ienumerable

我有一些 IEnumberable 项目集合。我使用 .Single() 在集合中查找特定对象。

我选择使用 Single() 因为应该只有一个特定的项目。但是,如果不存在,那么我需要创建它并将其添加到集合中。

我的问题是,如果没有与谓词匹配的项目或有多个项目,Single() 会抛出相同的错误。我的想法是将 Single() 调用放在 try 中并捕获异常,添加项目,然后继续。但是,由于这两种情况都会抛出 InvalidOperationException,我如何判断是由于没有项目还是有多个项目?

我知道我可以使用 First() 但这并没有强制执行应该只有一个的想法(无需做额外的工作)。

我也可以在 Single() 调用之前使用 Count(),但这似乎破坏了 Single() 的意义

最佳答案

你想要的是SingleOrDefault()

“或默认值”实际上意味着它返回 null(对于引用类型)或任何默认值对于非引用类型。您需要新建一个对象来取代它。

关于c# - 0 个或多个项目的 LINQ Single() 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13498419/

相关文章:

c# - AsQueryable() 的目的是什么?

c#-4.0 - 从C#查找中获取值(value)

c# - 是否可以在匿名函数中设置 "this"?

c# - 获得清洁来源+

c# - IQueryable 上的 .ToList 在后台执行时会导致 NullReferenceException

c# - LINQ to Entities 无法识别方法 'Int32

c# - Linq 中的 Union Vs Concat

c# - 在 LINQ 中使用 MIN 函数

c# - 墓碑后恢复歌曲播放

c# - List.IndexOf() - 返回最后一次出现的索引而不是第一次出现的索引?