IEnumerable<T>
的扩展方法 : DefaultIfEmpty()
源码解析 link
public static IEnumerable<TSource> DefaultIfEmpty<TSource>(IEnumerable<TSource> source, TSource defaultValue)
{
if (source == null)
{
throw new Exception("source is null");
}
using (IEnumerator<TSource> e = source.GetEnumerator())
{
if (e.MoveNext())
{
do
{
yield return e.Current;
}
while (e.MoveNext());
}
else
{
yield return defaultValue;
}
}
}