Mercurial > silverbladetech
diff MetroWpf/MetroWpf.Framework/Extensions/EnumerableExtensions.cs @ 15:060f02cd4591
Initial commit, pre airport work
author | stevenh7776 stevenhollidge@hotmail.com |
---|---|
date | Mon, 12 Mar 2012 23:05:21 +0800 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MetroWpf/MetroWpf.Framework/Extensions/EnumerableExtensions.cs Mon Mar 12 23:05:21 2012 +0800 @@ -0,0 +1,57 @@ +using System; +using System.Collections.Generic; + +namespace MetroWpf +{ + /// <summary> + /// Extension methods for all kinds of (typed) enumerable data (Array, List, ...) + /// </summary> + public static class EnumerableExtensions + { + #region · Extensions · + + /// <summary> + /// Converts all items of a list and returns them as enumerable. + /// </summary> + /// <typeparam name="TSource">The source data type</typeparam> + /// <typeparam name="TTarget">The target data type</typeparam> + /// <param name="source">The source data.</param> + /// <returns>The converted data</returns> + /// <example> + /// + /// var values = new[] { "1", "2", "3" }; + /// values.ConvertList<string, int>().ForEach(Console.WriteLine); + /// + /// </example> + public static IEnumerable<TTarget> ConvertList<TSource, TTarget>(this IEnumerable<TSource> source) + { + foreach (var value in source) + { + yield return value.ConvertTo<TTarget>(); + } + } + + /// <summary> + /// Performs an action for each item in the enumerable + /// </summary> + /// <typeparam name="T">The enumerable data type</typeparam> + /// <param name="values">The data values.</param> + /// <param name="action">The action to be performed.</param> + /// <example> + /// + /// var values = new[] { "1", "2", "3" }; + /// values.ConvertList<string, int>().ForEach(Console.WriteLine); + /// + /// </example> + /// <remarks>This method was intended to return the passed values to provide method chaining. Howver due to defered execution the compiler would actually never run the entire code at all.</remarks> + public static void ForEach<T>(this IEnumerable<T> values, Action<T> action) + { + foreach (var value in values) + { + action(value); + } + } + + #endregion + } +} \ No newline at end of file