Mercurial > silverbladetech
comparison 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 |
comparison
equal
deleted
inserted
replaced
14:741981715d94 | 15:060f02cd4591 |
---|---|
1 using System; | |
2 using System.Collections.Generic; | |
3 | |
4 namespace MetroWpf | |
5 { | |
6 /// <summary> | |
7 /// Extension methods for all kinds of (typed) enumerable data (Array, List, ...) | |
8 /// </summary> | |
9 public static class EnumerableExtensions | |
10 { | |
11 #region · Extensions · | |
12 | |
13 /// <summary> | |
14 /// Converts all items of a list and returns them as enumerable. | |
15 /// </summary> | |
16 /// <typeparam name="TSource">The source data type</typeparam> | |
17 /// <typeparam name="TTarget">The target data type</typeparam> | |
18 /// <param name="source">The source data.</param> | |
19 /// <returns>The converted data</returns> | |
20 /// <example> | |
21 /// | |
22 /// var values = new[] { "1", "2", "3" }; | |
23 /// values.ConvertList<string, int>().ForEach(Console.WriteLine); | |
24 /// | |
25 /// </example> | |
26 public static IEnumerable<TTarget> ConvertList<TSource, TTarget>(this IEnumerable<TSource> source) | |
27 { | |
28 foreach (var value in source) | |
29 { | |
30 yield return value.ConvertTo<TTarget>(); | |
31 } | |
32 } | |
33 | |
34 /// <summary> | |
35 /// Performs an action for each item in the enumerable | |
36 /// </summary> | |
37 /// <typeparam name="T">The enumerable data type</typeparam> | |
38 /// <param name="values">The data values.</param> | |
39 /// <param name="action">The action to be performed.</param> | |
40 /// <example> | |
41 /// | |
42 /// var values = new[] { "1", "2", "3" }; | |
43 /// values.ConvertList<string, int>().ForEach(Console.WriteLine); | |
44 /// | |
45 /// </example> | |
46 /// <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> | |
47 public static void ForEach<T>(this IEnumerable<T> values, Action<T> action) | |
48 { | |
49 foreach (var value in values) | |
50 { | |
51 action(value); | |
52 } | |
53 } | |
54 | |
55 #endregion | |
56 } | |
57 } |