IEnumerable 上的 FirstOrDefault 具有不可为空的内容

FirstOrDefault on IEnumerable with non-nullable contents

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

此代码可能如下所示:

return myEnumerable.FirstOrDefault() ?? mySpecialValue;

这很好,在 myEnumerable 包含可为 null 的内容之前工作正常。

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

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

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

我该怎么做?我更愿意避免必须捕获任何异常。

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

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