在IEnumerable上使用不可为空的内容的FirstOrDefault

Ora*_*ace 4 c# ienumerable

我需要返回一个的第一个元素IEnumerable.如果IEnumerable为空,我会返回一个特殊值.

这个代码看起来像这样:

return myEnumerable.FirstOrDefault() ?? mySpecialValue;
Run Code Online (Sandbox Code Playgroud)

这很好,工作正常,直到myEnumerable包含可空的东西.

在这种情况下,我得到的最好的是:

return myEnumerable.Any() ? myEnumerable.First() : mySpecialValue;
Run Code Online (Sandbox Code Playgroud)

但在这里我有多个枚举myEnumerable!

我该怎么做 ?我宁愿避免必须抓住任何例外.

Tim*_*ter 17

您可以使用重载DefaultIfEmpty来指定回退值.然后你也不需要,FirstOrDefault但你First安全使用:

return myEnumerable.DefaultIfEmpty(mySpecialValue).First();
Run Code Online (Sandbox Code Playgroud)