我需要返回IEnumerable的第一个元素。如果IEnumerable为空,则返回一个特殊值。
代码如下:

return myEnumerable.FirstOrDefault() ?? mySpecialValue;

这很好,工作正常,直到myEnumerable包含可空的东西。
在这种情况下,我得到的最好结果是:
return myEnumerable.Any() ? myEnumerable.First() : mySpecialValue;

但这里我有多个myEnumerable的枚举!
我该怎么做?我宁愿避免遇到任何异常。

最佳答案

您可以使用DefaultIfEmpty的重载来指定回退值。那么您也不需要FirstOrDefault,但您可以安全地使用First

return myEnumerable.DefaultIfEmpty(mySpecialValue).First();

09-20 15:44