• ROW_NUMBER() OVER (PARTITION BY yy ORDER BY zz) in Linq


      OVER PARTITION BY在oracle分析数据中经常用到的函数,Min Max也会在分析中经常使用,总结一下在Linq中的用法如下

           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 rnb = 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
                            })
                        );
    
                var min = beatles.OrderBy(x => x.id)
                            .GroupBy(x => x.inst)
                            .Select(group => new { Group = group, Minid = group.Min(e => e.id) })
                            .SelectMany(g => g.Group.Select(b => new {
                                b.id,
                                b.inst,
                                b.name,
                                minid = g.Minid
                            }));
    
                foreach (var item in rnb) // min
                {
                    Console.WriteLine("{0}|{1}|{2}", item.inst, item.name, item.rn);
                    //Console.WriteLine("{0}|{1}|{2}", item.inst, item.name, item.minid);
                }
    
                Console.ReadKey();
            }
  • 相关阅读:
    Python安装appium 遇见的报错
    appium
    QQ邮箱/微信邮箱发送邮件
    Python-变量
    神秘的咒语
    宿命的PSS
    E. Congruence Equation
    D. Substring
    leetcode 761. Special Binary String
    F
  • 原文地址:https://www.cnblogs.com/leeafei/p/7615206.html
Copyright © 2020-2023  润新知