void Main() { // This uses a custom 'Pair' extension method, defined below. Customers .Select (c => c.Name.ToUpper()) .Pair() // Local from this point on. .OrderBy (n => n) .Dump(); // Here's a more substantial example: Customers .Select (c => c.Name.ToUpper()) .OrderBy (n => n) .Pair() // Local from this p.oint on. .Select ((n, i) => "Pair " + i.ToString() + " = " + n) .Dump(); Customers.Select (c => c.Name.ToUpper()).Add().Dump(); } public static class MyExtensions { public static IEnumerable<string> Pair (this IEnumerable<string> source) { string firstHalf = null; foreach (string element in source) if (firstHalf == null) firstHalf = element; else { yield return firstHalf + ", " + element; firstHalf = null; } } public static IEnumerable<string> Add (this IEnumerable<string> source) { int index=1; foreach (string element in source) { yield return "NO."+index+++" " + element; } } }