zoukankan      html  css  js  c++  java
  • 19.C#逐一介绍IEnumerable和IEnumerable<T>中的扩展方法(10.3-10.5)

      今天没有太多的言语,只有代码,扩展方法多得太多,不能一一列完,书中一些,看多了也就会使用了。

     1 //Enumerable.Range 返回起始到结束范围,是一个Enumrable<int>类型
     2 //Range方法并不会真的构造含有适当数字的列表,它只是在恰当的时间生成那些数,"just in time"
     3 var c0 = Enumerable.Range(1, 10);
     4 foreach (var e in c0)
     5 {
     6     Console.WriteLine(e);//打印1,2,3,4,5,6,7,8,9,10
     7 }
     8 
     9 //Reverse(),反转列表
    10 var c1 = c0.Reverse();
    11 foreach (var e in c1)
    12 {
    13     Console.WriteLine(e);//打印10,9,8,7,6,5,4,3,2,1
    14 }
    15 
    16 //where(),过滤
    17 var c2 = c1.Where(x => x % 2 == 0);//返回符合谓语条件的元素,返回类型为Enumrable<int>
    18 foreach (var e in c2)
    19 {
    20     Console.WriteLine(e); //10,8,6,4,2
    21 }
    22 
    23 Console.WriteLine("---------------------------------------------");
    24 
    25 //使用链式操作,因为每个操作都是返回Enumrable<int>
    26 c0.Reverse().Where(x => x % 2 == 0).ToList().ForEach(x => Console.WriteLine(x));
    27 
    28 //select(),进行投影,返回自定义类型对象列表
    29 string[] arrs = { "James", "John", "Michelle", "Amy", "Kim" };
    30 
    31 //返回一个匿名类型列表,该匿名类型包含First和Last属性
    32 var objs = arrs.Select(x => new { First = x.First(), Last = x.Last() });
    33 foreach (var e in objs)
    34 {
    35     Console.WriteLine(e.First); //J,J,M,A,K
    36     Console.WriteLine(e.Last);  //s,n,e,y,m
    37 }
    38 
    39 //选择以"J"开头的元素,将Y从首位移到未位
    40 var yObjs = arrs.ToList().FindAll(x => x.StartsWith("J")).Select(x =>
    41 {
    42     var y = x.Remove(0, 1);
    43     return y + "J";
    44 });
    45 foreach (var e in yObjs)
    46 {
    47     Console.WriteLine(e);   //amesJ,ohnJ
    48 }
    49 
    50 //使用OrderBy进行排序,返回IOrderedEnumerable<string>
    51 var orderArrs = arrs.OrderBy(x => x.First());
    52 foreach (var e in orderArrs)
    53 {
    54     Console.WriteLine(e);   //Amy,James,John,Kim,Michelle
    55 }
    56 
    57 //ThenBy(),先使用OrderBy()以首字母排序,再以未位排序
    58 var thenArrs = arrs.OrderBy(x => x.First()).ThenBy(x => x.Last());
    59 foreach (var e in thenArrs)
    60 {
    61     Console.WriteLine(e);   //Amy,John,James,Kim,Michelle
    62 }

       请斧正。

  • 相关阅读:
    BZOJ 2565 最长双回文串 (Manacher)
    BZOJ 3881 [COCI2015]Divljak (Trie图+Fail树+树链的并+树状数组维护dfs序)
    BZOJ 3530 [SDOI2014]数数 (Trie图/AC自动机+数位DP)
    BZOJ 1444 [JSOI2009]有趣的游戏 (Trie图/AC自动机+矩阵求逆)
    BZOJ 1195 [HNOI2006]最短母串 (Trie图+状压+bfs最短路)
    luogu P5289 [十二省联考2019]皮配
    luogu P5285 [十二省联考2019]骗分过样例
    luogu P5294 [HNOI2019]序列
    luogu P5292 [HNOI2019]校园旅行
    luogu P5284 [十二省联考2019]字符串问题
  • 原文地址:https://www.cnblogs.com/a2htray/p/4217248.html
Copyright © 2011-2022 走看看