fork(39) download
  1. using System;
  2. using System.Linq;
  3.  
  4. public class Test
  5. {
  6. public static void Main()
  7. {
  8. var beatles = (new[]
  9. {
  10. new {id = 1, inst = "guitar", name = "john"},
  11. new {id = 2, inst = "guitar", name = "george"},
  12. new {id = 3, inst = "guitar", name = "paul"},
  13. new {id = 4, inst = "drums", name = "ringo"},
  14. new {id = 5, inst = "drums", name = "pete"}
  15. });
  16.  
  17. var result = beatles
  18. .GroupBy(g => g.inst)
  19. .Select(c => c.OrderBy(o => o.id).Select((v, i) => new { i, v }).ToList())
  20. .SelectMany(c => c)
  21. .Select(c => new { c.v.id, c.v.inst, c.v.name, rn = c.i + 1 })
  22. .ToList();
  23.  
  24. Console.WriteLine("id | inst \t| name \t| rn");
  25. foreach (var row in result)
  26. {
  27. Console.WriteLine($"{row.id} | {row.inst}\t| {row.name} \t| {row.rn}");
  28. }
  29. }
  30. }
Success #stdin #stdout 0.02s 132096KB
stdin
Standard input is empty
stdout
id | inst 	| name  	| rn
1  | guitar	| john  	| 1
2  | guitar	| george  	| 2
3  | guitar	| paul  	| 3
4  | drums	| ringo  	| 1
5  | drums	| pete  	| 2