因为用习惯了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将表示下标。

【C#】【System.Linq】一些便捷的数据处理方法(Range、Select)的更多相关文章

  1. 整理一下 System.Linq.Enumerable 类中的那些比较少用的方法

    Linq 虽然用得多,但是里面有一些方法比较少用,因此整理一下.Enumerable 类的所有方法可以在 MSDN 上查阅到:https://msdn.microsoft.com/zh-cn/libr ...

  2. mvc ef LINQ to Entities 不识别方法“Int32 Parse(System.String)”,因此该方法无法转换为存储表达式。

    private sys_User GetUserInfo() { sys_User model = null; var userId = Convert.ToInt32(AccountHelper.G ...

  3. LINQ to Entities 不识别方法“System.String ToString()”,因此该方法无法转换为存储表达式。

    var data = DataSource.Skip(iDisplayStart).Take(iDisplayLength).Select(o => new { MatNR = o.MatNR, ...

  4. Linq中字段数据类型转换问题(Linq to entity,LINQ to Entities 不识别方法"System.String ToString()"问题解决)

    1.在工作中碰到这样一个问题: 使用linq时,需要查询两个表,在这两张表中关联字段分别是int,和varchar()也就是string,在linq中对这两个字段进行关联, 如果强制类型转换两个不同类 ...

  5. LINQ to Entities 不识别方法“System.DateTime AddDays(Double)

    今天本想在linq里按照时间筛选一下超时的数据,一共两个字段FeedBackTime(计划反馈时间).EndTime(实际反馈时间).需求是这样的,查找数据库里所有EndTime大于FeedBackT ...

  6. LINQ to Entities 不识别方法“System.String get_Item(Int32)”,因此该方法无法转换为存储表达式。

    1.LINQ to Entities 不识别方法“System.String get_Item(Int32)”,因此该方法无法转换为存储表达式.项目中发现linq to entities 不识别? , ...

  7. LINQ to Entities 不识别方法“System.Guid Parse(System.String)”,因此该方法无法转换为存储表达式。

    LINQ to Entities 不识别方法"System.Guid Parse(System.String)",因此该方法无法转换为存储表达式. linq 中不能转换类型

  8. LINQ to Entities 不识别方法"System.String ToString()",因此该方法无法转换为存储表达式 的解决方法

    一.案例1,及解决方案: "LINQ to Entities 不识别方法"System.String ToString()",因此该方法无法转换为存储表达式." ...

  9. LINQ to Entities 不识别方法“System.String ToString(System.String)”,因此该方法无法转换为存储表达式。

    来源:https://www.cnblogs.com/hao-1234-1234/p/9112434.html 6  Select的时候,时间无法转换成 年月日  YYMMMdd 报错:LINQ to ...

  10. 《Entity Framework 6 Recipes》中文翻译系列 (26) ------ 第五章 加载实体和导航属性之延缓加载关联实体和在别的LINQ查询操作中使用Include()方法

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 5-7  在别的LINQ查询操作中使用Include()方法 问题 你有一个LINQ ...

随机推荐

  1. RocketMQ 系列(四) 消息存储

    RocketMQ 系列(四) 消息存储 本文是 RocketMQ 系列的第四篇,下面是前面几篇的文章,不清楚的话点击看一下吧. RocketMQ系列(一) 基本介绍 RocketMQ 系列(二) 环境 ...

  2. 【krpano】淘宝buy+案例

    这是一个类似淘宝buy+的案例,是基于krpano全景开发工具二次开发的全景视频.WebVR.360°环物.全景视频热点添加于一身的综合性案例.现在将案例上传网站供krpano技术人员和爱好者大家共同 ...

  3. ClickHouse(15)ClickHouse合并树MergeTree家族表引擎之GraphiteMergeTree详细解析

    GraphiteMergeTree该引擎用来对Graphite数据(图数据)进行瘦身及汇总.对于想使用ClickHouse来存储Graphite数据的开发者来说可能有用. 如果不需要对Graphite ...

  4. 探索Lighthouse性能分数计算背后的奥秘

    作为开发我们都知道,页面性能很重要,一个性能良好的页面可以给用户带来非常好的用户体验.那么,怎么能知道自己写的页面性能是好是坏呢? Lighthouse 是Chrome提供给开发者用来测量页面性能的工 ...

  5. Python基础—— 模块介绍、模块的使用、包介绍、 包的使用、软件开发目录规范

    文章目录 一 模块介绍 二 模块的使用 2.1 import语句 2.2 from-import 语句 2.3 其他导入语法(as) 2.4 循环导入问题 2.5 搜索模块的路径与优先级 2.6 区分 ...

  6. 圆角android

    资源地址 <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid an ...

  7. Java虚拟机(JVM):第一幕:起源,不一定全,但是一定靠谱

    在学习JVM之前,先分享一则信息:2009 年4月20日,Orace 宣布正式以74 亿美元的价格收购市值曾超过2000 亿美元的Sun公司,传奇的Sun Microsystems 从此落幕成为历史. ...

  8. 探索Redis与MySQL的双写问题

    本文已收录至GitHub,推荐阅读 Java随想录 微信公众号:Java随想录 原创不易,注重版权.转载请注明原作者和原文链接 目录 双写一致问题 缓存读写策略 Cache-Aside Pattern ...

  9. Django+celery+eventlet+flower+redis异步任务创建及查询实现

    1.环境版本:Django 3.2.12celery 5.3.4eventlet 0.33.3flower 2.0.1redis 3.5.3项目名称:new_project 2.celery配置(se ...

  10. 虹科技术|Redis企业版数据库:实现金融服务IT现代化!

    随着新冠肺炎和技术创新推动企业进入新的数字时代,金融行业客户现在需要一种快速.简单且根据需求量身定制的数字银行体验.这就需要银行进行转型,以提供更加数字化的服务,但无论战略.方法,还是满足消费者极高期 ...