当前位置:首页 > 开发 > 编程语言 > 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

    震惊

    震惊

编辑推荐
云计算之路-阿里云上:用上了开放缓存服务OCS 你知道在我们使用的云服务器中哪台最贵吗?跑memcache
C# 中的 readonly 关键字表示类中的字段只允许在定义时候或者构造方法中初始化。普通类型的数据完全
本来是学习在VB中使用SQLite数据库和Linq to SQLite,结果先学习到了在C#中使用SQLite数据库和Linq
http://www.cnblogs.com/outtamyhead/archive/2012/12/02/2798412.html 原文标题:How does it work
http://www.dotnetperls.com/list C# List Arrays do not dynamically resize. The List type does.
static void Main(string[] args) { var products=new[] { new{ProductName="Apple",Category="Food
阅读目录: 1.LINQ执行表达式 在看本篇文章之前我假设您已经具备我之前分析的一些原理知识,因为这
通过前面两步打下的基础 , 1、Sharepoint学习笔记---SPList--使用Linq to Sharepoint间接查询Extern
1、关于深拷贝和浅拷贝 C#支持两种类型:值类型和引用类型 值类型(Value Type):如 char, int, fl
使用代理实现对C# list distinct操作 范型在c#编程中经常使用,而经常用list 去存放实体集,因此会
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号