码迷,mamicode.com
首页 > 编程语言 > 详细

C#数组的Map、Filter、Reduce等价方法

时间:2017-05-31 23:14:15      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:java   bsp   base   map   等价   where   http   get   enum   

在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#数组的Map、Filter、Reduce等价方法

标签:java   bsp   base   map   等价   where   http   get   enum   

原文地址:http://www.cnblogs.com/zamhown/p/6926200.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!