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);
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM