• LINQ(初尝)


    好久没写博咯,因为学校的项目asp.net开发一个SCM,这学期才开始学做网站,需要大量时间打基础,再次感到,台上一分钟台下十年功。

    言归正传,.NET4.0出来有些日子了,自己LINQ却还未接触,之前都认为不过是语法糖啦,学不学无所为啦,上次看了aders hejlsberg 在.NET4.0发布会上的视频,more about what,less about how.让我印象深刻啊,what正是LINQ要表达了,感谢aders,所以今天决定初尝LINQ,顺便说一句,虽然学校项目还是用.net 2.0,但是怎能因此止步?拒绝新思维?

    LINQ(Language Integrated Query)

    c#2008为了支持LINQ增加了许多语言特性,诸如:扩展方法、LAMBDA表达式、表达式树、匿名类型、和对象初始值设定项等语言扩展,都是为了支持LINQ

    特性小结:

    当要扩展方法要应用于 var jz=new{Name}匿名类型时,就需要.net4.0的dynamic了

    lambda表达式左边是输入右边是输出

    表达式目录树(Expression类):代码是数据,意味着可以运行时修改或编辑

    小试一下:

                var processes = Process.GetProcesses()
                    .Where(p => p.Threads.Count > 5)
                    .OrderBy(p=>p.ProcessName )
                    .Select(p => new { p.Id, Name = p.ProcessName });
    

    代码等价于调用扩展方法的样子:

           var processes = Enumerable.Select(
                    Enumerable.OrderBy(
                          Enumerable.Where(Process.GetProcesses(), (p => p.Threads.Count > 5)),
                          (p => p.ProcessName)),
                    (p => new { p.Id, Name = p.ProcessName }));
    更佳代码:
             var processes = from p in Process.GetProcesses()
                                where p.Threads.Count > 5
                                orderby p.ProcessName
                                select new { p.Id, Name = p.ProcessName };
    虽然功能等价,但是可读性就差多咯.
     
    今天先到这儿,待续。
  • 相关阅读:
    解决Linux中java.net.UnknownHostException: oracledb.sys.iflashbuy.com问题
    Jenkins学习九:Jenkins插件之构建MSBuild
    Fitnesse初体验
    Jenkins遇到问题三:调整jdk版本不生效的解决办法
    linux强制用户下线
    Jenkins学习八:Jenkins语言本地化
    一个完整的JENKINS下的ANT BUILD.XML文件
    -bash: rz: command not found
    Jenkins学习七:Jenkins的授权和访问控制
    Android ormlite like() function is not working
  • 原文地址:https://www.cnblogs.com/jiangzhen/p/1714732.html
Copyright © 2020-2023  润新知