1. 程式人生 > >Row_number over (Partition by xxx order by yyy) in Linq?

Row_number over (Partition by xxx order by yyy) in Linq?

guitar con geo eat ber gui ins new enume

    public static void Main(string[] args)
    {
        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 o = beatles .OrderBy(x => x.id) // order by yyy .GroupBy(x => x.inst) // partition by xxx .Select(group => new { Group = group, Count = group.Count() }) .SelectMany(e
=>e.Group.Select(v=>v) .Zip(Enumerable.Range(1,e.Count) /*ROW_NUMBER*/, (i,j)=> new { i.inst,i.name, rn = j }) ); foreach (var item in o) { Console.WriteLine("{0}|{1}|{2}",item.inst,item.name, item.rn); } Console.ReadKey(); }

Row_number over (Partition by xxx order by yyy) in Linq?