fork download
  1. using System;
  2. using System.Globalization;
  3. using System.Linq;
  4. using System.Collections.Generic;
  5.  
  6. public class Test
  7. {
  8.  
  9.  
  10. public static void Main()
  11. {
  12. string text = "Count([AssignedTo]) as [AssignedTo] , Sum([Billing Amount]) as [Billing Amount] , Max([Billing Rate]) as [Billing Rate] , Min([ExecutionDate]) as [ExecutionDate] , Average([HoursSpent]) as [HoursSpent] , [Project], [Sub-Project], [TaskName], [Vendor], [Work Classification], [Work Done], Count([WorkItemType]) as [WorkItemType] ";
  13. var aggregates = new []{ "Count", "Sum", "Max", "Min", "Average"};
  14. var all = text.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
  15. .Select(col => new{ col, token = col.TrimStart().Split().First() })
  16. .Where(x => x.token.Contains('(') && aggregates.Any(a => x.token.StartsWith(a)))
  17. .Select(x => x.token);
  18. foreach(string aggregateCol in all)
  19. Console.WriteLine(aggregateCol);
  20. }
  21. }
Success #stdin #stdout 0.07s 34208KB
stdin
Standard input is empty
stdout
Count([AssignedTo])
Sum([Billing
Max([Billing
Min([ExecutionDate])
Average([HoursSpent])
Count([WorkItemType])