您的位置:首页 > 编程语言 > C#

C#数组的Map、Filter、Reduce操作

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



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

“Map” => Select方法

“Filter” => Where方法

“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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: