我需要返回IEnumerable
的第一个元素。如果IEnumerable
为空,我会返回一个特殊值。
此代码可能如下所示:
return myEnumerable.FirstOrDefault() ?? mySpecialValue;
这很好,并且在myEnumerable
包含可以为空的东西之前工作正常。
在这种情况下,我得到的最好的是:
return myEnumerable.Any() ? myEnumerable.First() : mySpecialValue;
但是在这里我有myEnumerable
的多个枚举!
我该怎么办?我宁愿避免任何例外。
答案 0 :(得分:17)
您可以使用DefaultIfEmpty
的重载来指定后备值。那么您也不需要FirstOrDefault
,但您可以安全地使用First
:
return myEnumerable.DefaultIfEmpty(mySpecialValue).First();