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 }
复制代码

   请斧正。

posted on   a2htray  阅读(850)  评论(0编辑  收藏  举报

编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示