using System.Diagnostics;
using System.Collections.Generic;
public static void Main()
var transformationPipeLine = new List<Func<string, string>>();
transformationPipeLine.Add((input) => input.Trim());
transformationPipeLine.Add((input) => input.Substring(1));
transformationPipeLine.Add((input) => input.Substring(0, input.Length - 1));
transformationPipeLine.Add((input) => input.ToUpper());
var text = " 1Manish Jain0 ";
var output = transformationPipeLine.Aggregate(text, (input, transform)=> transform(input));
Console.WriteLine(output);
var chars = Enumerable.Range(1,1000000).Select(i=>"S"+i).AsEnumerable();
Stopwatch stopWatch = new Stopwatch();
var csv1 = chars.Aggregate(new StringBuilder(), (a,b) => { if(a.Length>0) a.Append(","); a.Append(b); return a;});
Console.WriteLine(stopWatch.Elapsed.TotalSeconds.ToString("f2") +" seconds = Aggregate w/ String Builder ");
Stopwatch stopWatch1 = new Stopwatch();
Console.WriteLine("After Restart");
var csv2 = string.Join(",",chars);
Console.WriteLine("Before Stop");
Console.WriteLine(stopWatch1.Elapsed.TotalSeconds.ToString("f2") + " seconds = String.Join ");