using System.Collections.Generic;
public static void Main()
string[] stringArray = { "abc", "def", "ghi" };
IEnumerable<string> q1 = stringArray.ConvertCollectionToUpperCase();
IEnumerable<string> q2 = q1.AppendString("!!!");
IEnumerable<string> q3 = stringArray.ConvertCollectionToUpperCase().AppendString("!!!");
foreach (string str in q3)
Console.WriteLine("Main: str >{0}<", str);
public static class LocalExtensions
public static IEnumerable<string>
ConvertCollectionToUpperCase(this IEnumerable<string> source)
foreach (string str in source)
Console.WriteLine("ToUpper: source >{0}<", str);
yield return str.ToUpper();
public static IEnumerable<string>
AppendString(this IEnumerable<string> source, string stringToAppend)
foreach (string str in source)
Console.WriteLine("AppendString: source >{0}<", str);
yield return str + stringToAppend;