Row_number over (Partition by xxx order by yyy) in Linq?
阿新 • • 發佈:2017-09-30
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?