首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >你如何获得foreach循环的当前迭代的索引?

你如何获得foreach循环的当前迭代的索引?

提问于 2017-12-15 02:57:09
回答 2关注 0查看 277

如何在C#中获得一个值代表一个foreach循环的当前迭代?

例如,目前现在我需要根据我的情况做这样的事情:

代码语言:txt
复制
代码语言:txt
AI代码解释
复制
int i=0;
代码语言:txt
AI代码解释
复制
foreach (Object o in collection)
代码语言:txt
AI代码解释
复制
{
代码语言:txt
AI代码解释
复制
    // ...
代码语言:txt
AI代码解释
复制
    i++;
代码语言:txt
AI代码解释
复制
}

回答 2

Dust

发布于 2017-12-15 05:17:37

解决方案:

代码语言:txt
AI代码解释
复制
foreach (var item in Model.Select((value, i) => new { i, value }))
代码语言:txt
AI代码解释
复制
{
代码语言:txt
AI代码解释
复制
    var value = item.value;
代码语言:txt
AI代码解释
复制
    var index = item.i;
代码语言:txt
AI代码解释
复制
}

这通过使用Linq的这个重载获得item(item.value)和它的index(item.i):Select

函数[select]中的第二个参数表示源元素的索引。

new { i, value }是创建一个新的匿名对象。

心愿

发布于 2017-12-15 05:16:35

该foreach是遍历实现集合IEnumerable。它通过调用GetEnumerator集合来完成这个操作,这将返回一个Enumerator。

这个枚举器有一个方法和一个属性:

  • MoveNext()
  • Current

Current返回Enumerator当前所在的对象,并MoveNext更新Current到下一个对象。

显然,索引的概念对于枚举概念来说是陌生的,不可能做到。

因此,大多数集合都可以使用索引器和for循环构造来遍历。

我非常喜欢在这种情况下使用for循环,而不是使用局部变量来跟踪索引。

和开发者交流更多问题细节吧,去 写回答
相关文章
java退出foreach循环_forEach方法如何跳出循环[通俗易懂]
3.1 foreach()不能使用break和continue这两个关键字,foreach和普通的for循环是不同的,它不是普通的遍历,实现continue的效果可以直接使用return。
全栈程序员站长
2022/09/01
15.7K0
php foreach跳出本次/当前循环与终止循环方法
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/112380.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/08
2.7K0
foreach跳出本次/当前循环与终止循环方法_js 跳出for循环
forEach无法通过正常流程(如break)终止循环,但可通过抛出异常的方式实现终止循环
全栈程序员站长
2022/11/01
11.5K0
【Java】迭代器(Iterator)与增强for循环(forEach)
1. 迭代器(Iterator) 迭代器的作用 用来遍历集合 迭代器实现遍历 Iterator itr = 集合.iterator(); while(itr.hasNext()){ /** * next(): * ①指针下移1位,next指针初始状态没有指向任何元素,第一次调用next()方法时,指向第一位元素 * ②将下移后指针指向的元素返回 */ System.out.println(itr.next()); } 2. 增强for循环(forEach) 作用 用来遍历数组、集合 forE
CODER-V
2023/03/04
6280
js 的forEach 如何跳出循环「建议收藏」
forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。对于空数组不会执行回调函数
全栈程序员站长
2022/09/05
7K0
JavaScript中如何中断forEach循环
arr.forEach(callback[, thisArg]),callback会接收到三个参数:currentValue、index、array
meteoric
2018/11/20
3K0
js 中 forEach 如何跳出循环?
// 1.for方法跳出循环 function getItemByIdFor(arr, id) { var item = null; for (var i = 0; i < arr.length; i++) { console.log("for循环 i", i); if (arr[i].id == id) { item = arr[i]; break; } } return ite
蓓蕾心晴
2022/11/22
8.9K0
perl的foreach循环的坑
最近在写perl脚本的时候用foreach遍历hash的时候,出现遇到了一个问题,就是说当hash为一层的时候,并不会有问题,但是当hash类型结构比较复杂的时候,就会有需要注意的地方了。
纪莫
2019/03/14
1.5K0
Java中的增强 for 循环 foreach
  foreach 是 Java 中的一种语法糖,几乎每一种语言都有一些这样的语法糖来方便程序员进行开发,编译期间以特定的字节码或特定的方式来对这些语法进行处理。能够提高性能,并减少代码出错的几率。在
IT可乐
2018/01/04
3.4K0
Java中的增强 for 循环   foreach
增强For循环(foreach)
(1)只能顺序遍历所有元素,无法实现较为复杂的循环,如在某些条件下需要后退到之前遍历过的某个元素,不能完成
星哥玩云
2022/09/14
2.3K0
面试官:如何停止 JavaScript 中的 forEach 循环?
我对结果感到沮丧,问面试官:“为什么?实际上可以停止 JavaScript 中的 forEach 循环吗?”
前端达人
2023/08/31
5450
面试官:如何停止 JavaScript 中的 forEach 循环?
C#如何:编写简单的 Parallel.ForEach 循环
本文档使用 lambda 表达式在 PLINQ 中定义委托。 如果不熟悉 C# 或 Visual Basic 中的 lambda 表达式,请参阅 PLINQ 和 TPL 中的 Lambda 表达式。
全栈程序员站长
2022/09/09
1.8K0
如何获得当前数据库的SCN值
Last Updated: Thursday, 2004-12-02 15:04 Eygle
数据和云01
2018/09/10
2K0
cssjshtml js 循环forEach
 js 循环forEach const names=new Array() resp.series.forEach(function (item,index) { names.push(item['name']) })
葫芦
2019/04/17
7K0
迭代器和foreach原理。
迭代器是一种设计模式,它的定义为:提供一种方法访问一个容器对象中的各个元素,而又不需暴露该容器对象的内部细节。迭代器模式,就是为容器而生。
崔笑颜
2020/07/23
8820
C# foreach循环较for循环的优势与劣势
一、foreach循环的优势 C#支持foreach关键字,foreach在处理集合和数组相对于for存在以下几个优势: 1、foreach语句简洁 2、效率比for要高(C#是强类型检查,for循环对于数组访问的时候,要对索引的有效值进行检查) 3、不用关心数组的起始索引是几(因为有很多开发者是从其他语言转到C#的,有些语言的起始索引可能是1或者是0) 4、处理多维数组(不包括锯齿数组)更加的方便,代码如下: int[,] nVisited ={ {1,2,3}, {4,5,6
郑小超.
2018/01/26
2.9K0
for和foreach循环语句
今天我们来讲解一下 for跟foreach 一、for 是一个循环语句 for break continue 从 i=0开始,到i=10结束,每次循环 for (i = 1; i <= 10; echo $i; } for (i = 10; i >0; echo $i; } //for可以嵌套 for (i = 1; i <= 10; for (j = 1; j <= 10; continue; echo i.j; } if($i==5) bre
老雷PHP全栈开发
2020/07/02
3K0
变相跳出forEach循环
众所周知,forEach循环是无法中途跳出循环的,有点同学说不是可以通过抛出错误跳出循环吗?是的。抛出异常是广为流传的一种方法,结果是我们想要,但是你看代码,哪个正常人会这样写代码?是非forEach不用吗?还是其他的循环关键字不配呢。
骤雨重山
2023/08/13
3990
变相跳出forEach循环
day022: forEach中return有效果吗?如何中断forEach循环?
022: forEach中return有效果吗?如何中断forEach循环? 在forEach中用return不会返回,函数会继续执行。 let nums = [1, 2, 3]; nums.forEach((item, index) => { return;//无效 }) 中断方法: 使用try监视代码块,在需要中断的地方抛出异常。 官方推荐方法(替换方法):用every和some替代forEach函数。every在碰到return false的时候,中止循环。some在碰到return ture的时
用户3806669
2021/03/11
2.6K0
如何获得Oracle分区索引类型
碰巧在墨天轮上看资料就看到了eygle的这篇文章《如何获得 Oracle 分区索引的类型 - 全局分区索引、本地分区索引》,秉承了eygle大神一如既往的风格,文章“短小”,但是“精悍”,从我看eygle的第一本书开始,就记住了他这句“由点及面”,不仅在数据库领域中,在其他工作领域,这种学习方法,都是适用的。正所谓“授之以鱼不如授之以渔”。
bisal
2020/04/16
1.3K0

相似问题

如何确定foreach循环中的第一个和最后一个迭代?

21.7K

你当前不允许使用VNC?

5675

Bash如何从Epoch on Linux获得当前时间?

2584

swift for循环:索引,数组中的元素?

21.2K

迭代std :: vector:unsigned与有符号的索引变量?

2409
相关问答用户
某公司 | 程序员擅长1个领域
新浪微博 | 高级总监擅长4个领域
腾讯云TDP | 先锋会员擅长2个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档