我需要返回IEnumerable
的第一个元素。如果IEnumerable
为空,则返回一个特殊值。
代码如下:
return myEnumerable.FirstOrDefault() ?? mySpecialValue;
这很好,工作正常,直到
myEnumerable
包含可空的东西。在这种情况下,我得到的最好结果是:
return myEnumerable.Any() ? myEnumerable.First() : mySpecialValue;
但这里我有多个
myEnumerable
的枚举!我该怎么做?我宁愿避免遇到任何异常。
最佳答案
您可以使用DefaultIfEmpty
的重载来指定回退值。那么您也不需要FirstOrDefault
,但您可以安全地使用First
:
return myEnumerable.DefaultIfEmpty(mySpecialValue).First();