【C#】【System.Linq】一些便捷的数据处理方法(Range、Select)
1.【C#】【串口通信(Serial Port)】【实例】建议串口调试WinForm桌面应用实例——已实现功能<存在未知BUG>2.【C#】【命名空间(namespace)】.NET6.0后支持的顶级语句使用问题3.【C#】【Equals和ReferenceEquals】关于对象和值的问题4.【C#】【IO】【实例】统计多个文件夹下的图片5.【C#】【字符串内插】关于$" "(字符串内插构造格式化字符串)的使用6.【C#】【IO】【实例】接上一个统计的新功能7.【C#】【DateTime】获取当前时间的前一天或者后一天方法学习8.【C#】【System.IO】关于拷贝文件夹以及(Directory和DirectoryInfo、File和FileInfo)的区别
9.【C#】【System.Linq】一些便捷的数据处理方法(Range、Select)
10.【C#】【IO】【Threading】【实例】工作报表前的本地数据聚合操作11.【C#】【WinForm】MDI窗体因为用习惯了Python中一些便捷的方法,随即查询C#中有没有类似的。
一、Range()方法
在Python中,range(Start,End,Step)可以直接生成一个可迭代对象,便用于需要循环多次处理某些代码块:
(注:Range方法中的End是开区间,range(1,10)实际的取值是(1 ~ 9))
1 for item in range(1, 10): 2 print(item, end='') 3 # Output: 4 # 123456789
在C#中也有相同的方法可以使用:
System.Linq 命名空间中的 Enumerable.Range(Start, Count)
1 foreach(int item in Enumerable.Range(1, 10)) 2 Console.Write($"{item}="); 3 // Output: 4 // 1=2=3=4=5=6=7=8=9=10=
range(Start,End,Step)和Enumerable.Range(Start, Count)中的参数含义有别:
range 依次是 开始,结束,步长,且生成的对象并不包括End这个元素。
Range 依次是 开始,数量,即从1开始,向后数10个数,所以上述输出的结果是1~10,如果改成Range(0, 10)则结果将是0~9。
二、Select()方法
其对应着Python中的Enumerate()方法,即遍历元素的同时,并将对应的下标也赋值给index:
1 for index, item in enumerate(range(1, 10)): 2 print(f'元素 | {item} | 的下标是:{index}') 3 # Output: 4 ''' 5 元素 | 1 | 的下标是:0 6 元素 | 2 | 的下标是:1 7 元素 | 3 | 的下标是:2 8 元素 | 4 | 的下标是:3 9 元素 | 5 | 的下标是:4 10 元素 | 6 | 的下标是:5 11 元素 | 7 | 的下标是:6 12 元素 | 8 | 的下标是:7 13 元素 | 9 | 的下标是:8 14 '''
C#中Select()方法来实现,Select方法可以对集合进行转换,并返回一个包含转换后元素的新集合。
1 foreach (var item in Enumerable.Range(1, 10).Select((num, index) => new { Index = index, Num = num })) 2 Console.WriteLine($"Index: {item.Index}, Num: {item.Num}"); 3 4 // Output: 5 //Index: 0, Num: 1 6 //Index: 1, Num: 2 7 //Index: 2, Num: 3 8 //Index: 3, Num: 4 9 //Index: 4, Num: 5 10 //Index: 5, Num: 6 11 //Index: 6, Num: 7 12 //Index: 7, Num: 8 13 //Index: 8, Num: 9 14 //Index: 9, Num: 10
Select()方法中的参数含义依次为,元素,下标,如果写成Select(index, num)那么index将表示元素,num将表示下标。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!