fork download
  1. using System;
  2. using System.Linq;
  3. using System.Collections.Generic;
  4.  
  5. class Channel
  6. {
  7. public String Name { get; set; }
  8. public TimeSpan Durarion { get; set; }
  9. }
  10.  
  11.  
  12. public class Test
  13. {
  14. public static void Main()
  15. {
  16. var array = new[]{
  17. "Channel 1, 01:05:36",
  18. "Channel 2, 02:25:36",
  19. "Group 1, 22:25:36",
  20. "Network, 41:40:09",
  21. "Loss of, 03:21:17",
  22. "Loss of, 01:13:28",
  23. "Channel 1, 04:25:36",
  24. "Channel 2, 00:25:36",
  25. };
  26.  
  27. var channelGroups = array.Select(s =>
  28. {
  29. var tokens = s.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
  30. return new Channel()
  31. {
  32. Name = tokens[0],
  33. Durarion = new TimeSpan(
  34. int.Parse(tokens[1].Split(':')[0]), // hours
  35. int.Parse(tokens[1].Split(':')[1]), // minutes
  36. int.Parse(tokens[1].Split(':')[2])) // seconds
  37. };
  38. })
  39. .GroupBy(c => c.Name)
  40. .Select(g => new
  41. {
  42. Channel = g.Key,
  43. Count = g.Count(),
  44. Average = g.Average(c => c.Durarion.TotalMinutes)
  45. });
  46.  
  47. foreach(var group in channelGroups)
  48. {
  49. Console.WriteLine("Channel:[{0}] Count:[{1}] Average:[{2}]"
  50. ,group.Channel,group.Count,group.Average);
  51. }
  52. }
  53. }
Success #stdin #stdout 0.05s 38232KB
stdin
Standard input is empty
stdout
Channel:[Channel 1] Count:[2] Average:[165.6]
Channel:[Channel 2] Count:[2] Average:[85.6]
Channel:[Group 1] Count:[1] Average:[1345.6]
Channel:[Network] Count:[1] Average:[2500.15]
Channel:[Loss of] Count:[2] Average:[137.375]