Mercurial > silverbladetech
view MetroWpf/MetroWpf.Framework/Extensions/LinqExtensions.cs @ 81:4ea16a799a03
upload ready after tidy up
author | Steven Hollidge <stevenhollidge@hotmail.com> |
---|---|
date | Mon, 23 Apr 2012 23:20:01 +0100 |
parents | 060f02cd4591 |
children |
line wrap: on
line source
using System; using System.Collections.Generic; using System.Linq.Expressions; namespace MetroWpf { public static class LinqExtensions { #region · Extensions · /// <summary> /// Traverses the specified source. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="source">The source.</param> /// <param name="fnRecurse">The fn recurse.</param> /// <returns></returns> public static IEnumerable<T> Traverse<T>(this IEnumerable<T> source, Func<T, IEnumerable<T>> fnRecurse) { foreach (T item in source) { yield return item; IEnumerable<T> seqRecurse = fnRecurse(item); if (seqRecurse != null) { foreach (T itemRecurse in Traverse(seqRecurse, fnRecurse)) { yield return itemRecurse; } } } } #endregion } }