zoukankan      html  css  js  c++  java
  • C#数组的Map、Filter、Reduce操作

    在Javascript、Python等语言里,MapFilterReduce是数组的常用方法,可以让你在实现一些数组操作时告别循环,具有很高的实用价值。它们三个的意义大家应该都清楚,有一个十分形象的解释如下:

    然而,支持lambda表达式的C#也有类似的方法,但不是这样命名的。实现IEnumerable接口的类(如List、HashSet、继承Array的类等)都有如下等价方法:

    1. “Map” => Select方法
    2. “Filter” => Where方法
    3. “Reduce” => Aggregate方法

    用法示例如下:

    class SuperClass
    {
        public int Value { get; set; }
        public SuperClass(int value)
        {
            this.Value = value;
        }
    }
    
    class ClassA : SuperClass
    {
        public ClassA(int value) : base(value) { }
    }
    
    static class Test
    {
        static void test()
        {
            var list1 = new List<SuperClass>()
            {
                new SuperClass(0),    //元素0
                new SuperClass(1),    //元素1
                new SuperClass(2),    //元素2
            };
    
            //Select,结果为{元素0, 元素1, 元素2},类型为List<ClassA>
            List<ClassA> list2 = list1.Select(e => e as ClassA).ToList();
    
            //Where,结果为{元素1, 元素2},类型为List<ClassA>
            List<ClassA> list3 = list2.Where(e => e.Value > 0).ToList();
    
            //Aggregate,结果为3,类型为int
            int sum = list3.Aggregate(0, (acc, e) => acc += e.Value);
        }
    }
  • 相关阅读:
    C语言基本语法——函数
    C语言基本语法——数组
    iOS面试总结(待完善)
    iOS开发——蓝牙开发
    iOS开发——性能分析
    ios开发——runtime
    Extjs6的常见问题及解决办法
    会员信息布局,自动放缩
    LINQ关于NULL的怪现象
    [代码整洁]自我感悟
  • 原文地址:https://www.cnblogs.com/zamhown/p/6926200.html
Copyright © 2011-2022 走看看