| 12345678910111213141516171819202122232425262728 | 
							- using System;
 
- using System.Collections.Generic;
 
- using System.Linq;
 
- using System.Text;
 
- namespace Rssdp.Infrastructure
 
- {
 
- 	internal static class IEnumerableExtensions
 
- 	{
 
- 		public static IEnumerable<T> SelectManyRecursive<T>(this IEnumerable<T> source, Func<T, IEnumerable<T>> selector)
 
- 		{
 
- 			if (source == null) throw new ArgumentNullException("source");
 
- 			if (selector == null) throw new ArgumentNullException("selector");
 
- 			return !source.Any() ? source :
 
- 					source.Concat(
 
- 							source
 
- 							.SelectMany(i => selector(i).EmptyIfNull())
 
- 							.SelectManyRecursive(selector)
 
- 					);
 
- 		}
 
- 		public static IEnumerable<T> EmptyIfNull<T>(this IEnumerable<T> source)
 
- 		{
 
- 			return source ?? Enumerable.Empty<T>();
 
- 		}
 
- 	}
 
- }
 
 
  |