using System;
using System.Linq;
public class Test
{
public static void Main()
{
var beatles = (new[]
{
new {id = 1, inst = "guitar", name = "john"},
new {id = 2, inst = "guitar", name = "george"},
new {id = 3, inst = "guitar", name = "paul"},
new {id = 4, inst = "drums", name = "ringo"},
new {id = 5, inst = "drums", name = "pete"}
});
var result = beatles
.GroupBy(g => g.inst)
.SelectMany(c => c.OrderBy(o => o.id).Select((v, i) => new { i, v }))
// .SelectMany(c => c)
.Select(c => new { c.v.id, c.v.inst, c.v.name, rn = c.i + 1 })
.ToList();
Console.WriteLine("id | inst \t| name \t| rn");
foreach (var row in result)
{
Console.WriteLine($"{row.id} | {row.inst}\t| {row.name} \t| {row.rn}");
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTGlucTsKCnB1YmxpYyBjbGFzcyBUZXN0CnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKCXsKCQl2YXIgYmVhdGxlcyA9IChuZXdbXQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBuZXcge2lkID0gMSwgaW5zdCA9ICJndWl0YXIiLCBuYW1lID0gImpvaG4ifSwKICAgICAgICAgICAgICAgIG5ldyB7aWQgPSAyLCBpbnN0ID0gImd1aXRhciIsIG5hbWUgPSAiZ2VvcmdlIn0sCiAgICAgICAgICAgICAgICBuZXcge2lkID0gMywgaW5zdCA9ICJndWl0YXIiLCBuYW1lID0gInBhdWwifSwKICAgICAgICAgICAgICAgIG5ldyB7aWQgPSA0LCBpbnN0ID0gImRydW1zIiwgbmFtZSA9ICJyaW5nbyJ9LAogICAgICAgICAgICAgICAgbmV3IHtpZCA9IDUsIGluc3QgPSAiZHJ1bXMiLCBuYW1lID0gInBldGUifQogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIHZhciByZXN1bHQgPSBiZWF0bGVzCiAgICAgICAgICAgICAgICAuR3JvdXBCeShnID0+IGcuaW5zdCkKICAgICAgICAgICAgICAgIC5TZWxlY3RNYW55KGMgPT4gYy5PcmRlckJ5KG8gPT4gby5pZCkuU2VsZWN0KCh2LCBpKSA9PiBuZXcgeyBpLCB2IH0pKQogICAgICAgICAgICAgICAgLy8gLlNlbGVjdE1hbnkoYyA9PiBjKQogICAgICAgICAgICAgICAgLlNlbGVjdChjID0+IG5ldyB7IGMudi5pZCwgYy52Lmluc3QsIGMudi5uYW1lLCBybiA9IGMuaSArIDEgfSkKICAgICAgICAgICAgICAgIC5Ub0xpc3QoKTsKCiAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCJpZCB8IGluc3QgXHR8IG5hbWUgIFx0fCBybiIpOwogICAgICAgICAgICBmb3JlYWNoICh2YXIgcm93IGluIHJlc3VsdCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoJCJ7cm93LmlkfSAgfCB7cm93Lmluc3R9XHR8IHtyb3cubmFtZX0gIFx0fCB7cm93LnJufSIpOwogICAgICAgICAgICB9ICAgICAKCX0KfQ==