拿 C# 搞函数式编程 - 3
前言 今天和某个人聊天聊到了 C# 的 LINQ,发现我认识的 LINQ 似乎和大多数人认识的 LINQ 不太一样,怎么个不一样法呢?其实 LINQ 也可以用来搞函数式编程。 当然,并不是说写几个 lambda 和用用像 Java 那样的 stream 之类的就算叫做 LINQ 了,LINQ 其实是一个另外的一些东西。 LINQ 在 C# 中,相信大家都见过如下的 LINQ 写法: IEnumerable<int> EvenNumberFilter(IEnumerable<int> list) { return from c in list where c & 1 == 0 select c; } 以上代码借助 LINQ 的语法实现了对一个列表中的偶数的筛选。 LINQ 只是一个用于方便对集合进行操作的工具而已,如果我们如果想让我们自己的类型支持 LINQ 语法,那么我们需要让我们的类型实现 IEnumerable<T> ,然后就可以这么用了。。。 哦,原来是这样的吗?那我全都懂了。。。。。。 ???哦,我的老天,当然不是! 其实 LINQ 和 IEnumerable<T> 完全没有关系!LINQ 只是一组扩展方法而已,它主要由以下方法组成: 方法名称 方法说明 Where 数据筛选 Select/SelectMany 数据投影 Join/GroupJoin 数据联接