using System.Collections.Generic;
using System.Diagnostics;
public static class IEnumerableExtensions
public static IEnumerable<T> Do<T>(this IEnumerable<T> data, Action<T> predicate)
foreach (T value in data)
public static void Main(string[] args)
var sw = new Stopwatch();
var query = Enumerable.Range(1, 10)
.Where(num => num % 2 == 0)
.Do(num => Console.WriteLine("Processing {0} : {0} * 2 = {1}", num, num * 2));
foreach (var num in query)
Console.WriteLine("Elasped Time: " + sw.ElapsedTicks);
Console.WriteLine("Done. You can continue working.");