首页 > 其他 > 详细

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

时间:2017-09-30 16:12:49      阅读:415      评论:0      收藏:0      [点我收藏+]
    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?

原文:http://www.cnblogs.com/leeafei/p/7615206.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!