【C#】【System.Linq】一些便捷的数据处理方法(Range、Select) ...

打印 上一主题 下一主题

主题 781|帖子 781|积分 2343

因为用习惯了Python中一些便捷的方法,随即查询C#中有没有类似的。
 一、Range()方法
在Python中,range(Start,End,Step)可以直接生成一个可迭代对象,便用于需要循环多次处理某些代码块:
(注:Range方法中的End是开区间,range(1,10)实际的取值是(1 ~ 9))
  1. 1 for item in range(1, 10):
  2. 2     print(item, end='')
  3. 3 # Output:
  4. 4 # 123456789
复制代码
 
在C#中也有相同的方法可以使用:
System.Linq 命名空间中的 Enumerable.Range(Start, Count)
  1. 1 foreach(int item in Enumerable.Range(1, 10))
  2. 2     Console.Write($"{item}=");
  3. 3 // Output:
  4. 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. 1 for index, item in enumerate(range(1, 10)):
  2. 2     print(f'元素 | {item} | 的下标是:{index}')
  3. 3 # Output:
  4. 4 '''
  5. 5 元素 | 1 | 的下标是:0
  6. 6 元素 | 2 | 的下标是:1
  7. 7 元素 | 3 | 的下标是:2
  8. 8 元素 | 4 | 的下标是:3
  9. 9 元素 | 5 | 的下标是:4
  10. 10 元素 | 6 | 的下标是:5
  11. 11 元素 | 7 | 的下标是:6
  12. 12 元素 | 8 | 的下标是:7
  13. 13 元素 | 9 | 的下标是:8
  14. 14 '''
复制代码
 
C#中Select()方法来实现,Select方法可以对集合进行转换,并返回一个包含转换后元素的新集合。
  1. 1 foreach (var item in Enumerable.Range(1, 10).Select((num, index) => new { Index = index, Num = num }))
  2. 2             Console.WriteLine($"Index: {item.Index}, Num: {item.Num}");
  3. 3
  4. 4 // Output:
  5. 5 //Index: 0, Num: 1
  6. 6 //Index: 1, Num: 2
  7. 7 //Index: 2, Num: 3
  8. 8 //Index: 3, Num: 4
  9. 9 //Index: 4, Num: 5
  10. 10 //Index: 5, Num: 6
  11. 11 //Index: 6, Num: 7
  12. 12 //Index: 7, Num: 8
  13. 13 //Index: 8, Num: 9
  14. 14 //Index: 9, Num: 10
复制代码
 
  1. Select()方法中的参数含义依次为,元素,下标,如果写成Select(index, num)那么index将表示元素,num将表示下标。
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

羊蹓狼

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表