博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
19.C#逐一介绍IEnumerable和IEnumerable<T>中的扩展方法(10.3-10.5)
阅读量:4678 次
发布时间:2019-06-09

本文共 1870 字,大约阅读时间需要 6 分钟。

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

1 //Enumerable.Range 返回起始到结束范围,是一个Enumrable
类型 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,114 }15 16 //where(),过滤17 var c2 = c1.Where(x => x % 2 == 0);//返回符合谓语条件的元素,返回类型为Enumrable
18 foreach (var e in c2)19 {20 Console.WriteLine(e); //10,8,6,4,221 }22 23 Console.WriteLine("---------------------------------------------");24 25 //使用链式操作,因为每个操作都是返回Enumrable
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,K36 Console.WriteLine(e.Last); //s,n,e,y,m37 }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,ohnJ48 }49 50 //使用OrderBy进行排序,返回IOrderedEnumerable
51 var orderArrs = arrs.OrderBy(x => x.First());52 foreach (var e in orderArrs)53 {54 Console.WriteLine(e); //Amy,James,John,Kim,Michelle55 }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,Michelle62 }

   请斧正。

转载于:https://www.cnblogs.com/a2htray/p/4217248.html

你可能感兴趣的文章
002-BootStrap基本模板
查看>>
HttpClient使用详细教程
查看>>
Python黑科技:赋值技巧
查看>>
mybatis insert前获取要插入的值
查看>>
OGRE 入门 一、 ubuntu 12.04 下编译
查看>>
MySQL按照汉字的拼音排序
查看>>
3.1.3自适应阈值化
查看>>
NABCD
查看>>
ZOJ 2850 Beautiful Meadow (简单题)
查看>>
Android开源框架ImageLoader的完美例子
查看>>
LeetCode - Best Time to Buy and Sell Stock
查看>>
自写vim插件ldoc.vim,提供智能的lua注释代码补全
查看>>
java-Coculator
查看>>
一些小例子
查看>>
WebSocket4Net 0.5发布
查看>>
转 Winmail 退信分析大全 (2012,05,02 更新)
查看>>
499 单词计数 (Map Reduce版本)
查看>>
python笔记
查看>>
2、openSession和getCurrentSession方法的区别
查看>>
msgbox.js的修改使在iframe的可视区域显示
查看>>