the*_*row 35 .net c# linq coding-style
你更喜欢看什么?
try
{
var item = list.Single(x => x.HasFoo);
}
catch(InvalidOperationException e)
{
throw new InvalidOperationException("Exactly one item with foo expected, none found", e);
}
Run Code Online (Sandbox Code Playgroud)
要么:
var item = list.SingleOrDefault(x => x.HasFoo);
if (item == null)
throw new InvalidOperationException("Exactly one item with foo expected, none found");
Run Code Online (Sandbox Code Playgroud)
这里的最佳做法是什么?哪一个让异常更容易理解?
aba*_*hev 80
SingleOrDefault()
如果需要0或1项,请使用Single()
如果为1,而不是0或2多,项目预计还要记住,有许多可能的情况:
和:
不要忘记First()
,FirstOrDefault()
和Any()
我会写:
var item = list.Single(x => x.HasFoo);
Run Code Online (Sandbox Code Playgroud)
如果这不返回单个项目的情况如此常见,您需要一个更友好的错误消息,那么它真的是一个例外吗?