zoukankan      html  css  js  c++  java
  • linq:求分组后的每组最大值、最小值、平均值等、Aggregate聚合函数

    求分组后的每组最大值、最小值、平均值等

        public int MinEachGroup()
            {
                #region min-each-group
                List<Product> products = GetProductList();
    
                var categories = from p in products
                                 group p by p.Category into g
                                 let minPrice = g.Min(p => p.UnitPrice)
                                 select (Category: g.Key, CheapestProducts: g.Where(p => p.UnitPrice == minPrice));
    
                foreach (var c in categories)
                {
                    Console.WriteLine($"Category: {c.Category}");
                    foreach(var p in c.CheapestProducts)
                    {
                        Console.WriteLine($"	Product: {p}");
                    }
                }
                #endregion
                return 0;
            }

    用法

    该Linq字面意思为聚合,例如可用来对集合进行筛选以及上述的求和等等,它有三个重载,它是对列表上的每个元素执行操作,也就是说对第一个和第二个上的元素执行操作,将执行的结果继续携带进行操作。其中有一个重载是种子重载。

    我们求1到5的阶乘。

                var nums = Enumerable.Range(2, 4);
                var sum = nums.Aggregate(1, (a, b) => a * b);
                Console.WriteLine(sum);

    所谓种子,也就是先从种子开始作为第一个元素执行操作,整个过程为((((1*2)*3)*4)*5)。

    在项目中有这样一个场景:打开对话框上传文件,可以对该文件进行命名,但是我们知道文件名是无法以某些特殊字符命名的如<或者|等等,当文件名为这些时,上传到后台我们会进行替换处理用“-”来进行替换。我们看看代码,例如:

                var invalidFileName = Path.GetInvalidFileNameChars();
                var replaceResult = invalidFileName.Aggregate("study<Aggregate>first", (accmulate, result) => (accmulate.Replace(result, '-')));
                Console.WriteLine(replaceResult);

    结果如下:

  • 相关阅读:
    [bzoj1911][Apio2010特别行动队] (动态规划+斜率优化)
    [bzoj1597][usaco2008 mar]土地购买 (动态规划+斜率优化)
    [bzoj1901][zoj2112][Dynamic Rankings] (整体二分+树状数组 or 动态开点线段树 or 主席树)
    整体二分初步
    bzoj[3238][ahoi差异]
    概率dp学习
    poj[2104]K-th Number
    hdu[1711]number sequence
    hdu[2222]keywords search
    poj[1187][Noi 01]陨石的秘密
  • 原文地址:https://www.cnblogs.com/cxxtreasure/p/14163296.html
Copyright © 2011-2022 走看看