zoukankan      html  css  js  c++  java
  • c# in deep 之Lambda表达式于LINQ表达式结合后令人惊叹的简洁(2)

      当Lambda表达式和LINQ一起使用时,我们会发现原本冗长的代码会变得如此简单。比如我们要打印0-10之间的奇数,让其从高到低排列并求其平方根,现在只用一行代码即可完成其集合的生成,直接上代码:

      var collection= Enumerable.Range(0,10) .Where(x => x%2!=0).Reverse().Select(x => new{Original=x, SquareRoot=Math.Sqrt(x)});

                foreach (var element in collection)
                {
                    Console.WriteLine("sqrt{0} = {1}",element.Original,element.SquareRoot);
                }

      再上面基础上,我们不妨再增加一个排序功能。在LINQ中,排序通常使用OrderBy或OrderByDecending方法来实现,若要根据属性的多项属性进行排序,后面可跟随ThenBy或ThenByDecendilng。假如我们要对(-10)-10的整数求平方根先按大小排序,再按原值排序,可进行如下设计:

                  var collection = Enumerable.Range(-10, 21).Select(x => new { Original = x, sqare = x * x }).OrderBy(x => x.sqare).ThenBy(x => x.Original);

                foreach (var element in collection)
                {
                    Console.WriteLine( "(Original={0} , Sqare={1})",element.Original, element.sqare);
                }

      需要注意的是,排序不会改变原有的集合——它返回的是新的序列,这与List.Sort和Array.Sort完全不同。LINQ操作是无副作用的,它既不会影响输入,也不会改变环境。

    浮躁的人容易问:我到底该学什么;----别问,学就对了; 浮躁的人容易问:JS有钱途吗;----建议你去抢银行; 浮躁的人容易说:我要中文版!我英文不行!----不行?学呀! 浮躁的人分两种:只观望而不学的人;只学而不坚持的人; 浮躁的人永远不是一个高手。
  • 相关阅读:
    ACE反应器(Reactor)模式(1)
    net 命令
    ACE反应器(Reactor)模式(2)
    恢复SQLServer实例连接 (转载)
    在SQL Server Management Studio中可以运行作业但是用TSQL运行则失败 (转载)
    VirtualBox 之 共享磁盘
    从 IClassFactory 为 CLSID 为 {0002450000000000C000000000000046} 的 COM 组件创建实例失败,原因是出现以下错误: 8001010a解决办法 .
    SQLServer数据类型优先级对性能的影响 (转)
    封装getElementsByAttribute
    js中setAttribute 的兼容性
  • 原文地址:https://www.cnblogs.com/xuekai-to-sharp/p/3360837.html
Copyright © 2011-2022 走看看