zoukankan      html  css  js  c++  java
  • linq partition by

    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" }
    });
    
                //方法1
                //方法2
    
                foreach (var i in o)
                {
                    Console.WriteLine("{0} {1} {2}", i.inst, i.name, i.rn);
                }
    
                Console.ReadLine();
            }


    方法1:

    var o = beatles.OrderBy(m => m.id).ToList().GroupBy(x => x.inst)
                    .SelectMany(t => t.Select((b, i) => new { b, i })).Select(m => m.b);

    方法2:

    var o = beatles.OrderBy(x => x.id).GroupBy(x => x.inst)
                .Select(g => new { g, count = g.Count() })
                .SelectMany(t => t.g.Select(b => b).Zip(Enumerable.Range(1, t.count), (j, i) => new { j.inst, j.name, rn = i }));



    结果:

    guitar john 1 
    guitar george 2 
    guitar paul 3 
    drums ringo 1 
    drums pete 2 



  • 相关阅读:
    1025 反转链表
    Vue--修饰符
    Vue--watch
    Vue--防止页面闪烁
    Vue--过滤器
    Vue--自定义指令
    Vue--生命周期
    vue--父子组件传递数据
    vue--父子组件调用彼此的方法
    Celery--beat
  • 原文地址:https://www.cnblogs.com/hanjun0612/p/9779826.html
Copyright © 2011-2022 走看看