LINQ 【DefaultIfEmpty方法】

82 阅读1分钟

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;
				}
			}
	}