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

时间:2015-06-26 09:00:06

标签: c# ienumerable

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

此代码可能如下所示:

return myEnumerable.FirstOrDefault() ?? mySpecialValue;

这很好,并且在myEnumerable包含可以为空的东西之前工作正常。

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

return myEnumerable.Any() ? myEnumerable.First() : mySpecialValue;

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

我该怎么办?我宁愿避免任何例外。

1 个答案:

答案 0 :(得分:17)

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

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