当前位置:首页 > 开发 > 编程语言 > C# > 正文

List comprehensions与C#中的LINQ

发表于: 2012-02-07   作者:bookjovi   来源:转载   浏览:
摘要: 上篇blog用Prolog和Erlang的List comprehensions分别解决N queens问题,其中看出了List comprehensions的强大。 List comprehensions一般只有在函数式语言FP中才有,如Erlang和Haskell,那么在静态类型OO语言中存在不?如Java和C#?,很遗憾,Java中没有,而且实现起来比较繁琐,C#中则有这个List com

上篇blog用Prolog和Erlang的List comprehensions分别解决N queens问题,其中看出了List comprehensions的强大。

List comprehensions一般只有在函数式语言FP中才有,如Erlang和Haskell,那么在静态类型OO语言中存在不?如Java和C#?,很遗憾,Java中没有,而且实现起来比较繁琐,C#中则有这个List comprehensions,不过C#改了名字,叫做LINQ(Language-Integrated Query),看看下面的C#代码:

 

class LINQQueryExpressions
{
    static void Main()
    {

        // Specify the data source.
        int[] scores = new int[] { 97, 92, 81, 60 };

        // Define the query expression.
        IEnumerable<int> scoreQuery =
            from score in scores
            where score > 80
            select score;

        // Execute the query.
        foreach (int i in scoreQuery)
        {
            Console.Write(i + " ");
        }            
    }
}
// Output: 97 92 81

 我猜LINQ的设计者一定熟知FP的List comprehensions,不过从List comprehensions的角度看LINQ,LINQ还是显得繁琐,看看List comprehensions的表示吧:

 

[X || X <- [97, 92, 81, 60], X > 80].

 其实smalltalk解决这种问题也简单,用个block就可以了。

 

Java 8中加了lambda或许解决上面问题比现在优雅很多。

 

List comprehensions与C#中的LINQ

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号