| 12345678910111213141516171819202122232425262728293031323334 | 
							- using System;
 
- using System.Collections.Generic;
 
- using System.Linq;
 
- 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(nameof(source));
 
-             }
 
-             if (selector == null)
 
-             {
 
-                 throw new ArgumentNullException(nameof(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>();
 
-         }
 
-     }
 
- }
 
 
  |