首页 > 代码库 > C#数组的Map、Filter、Reduce等价方法
C#数组的Map、Filter、Reduce等价方法
在Javascript、Python等语言里,Map、Filter和Reduce是数组的常用方法,可以让你在实现一些数组操作时告别循环,具有很高的实用价值。它们三个的意义大家应该都清楚,有一个十分形象的解释如下:
然而,支持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 =http://www.mamicode.com/ 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等价方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。