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

2023-12-14

在 C# 中是否有一些我没有遇到过的罕见语言构造(比如我最近学到的一些,一些在 Stack Overflow 上)来获取表示 foreach 循环当前迭代的值?

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

int i = 0;
foreach (Object o in collection)
{
    // ...
    i++;
}

Ian Mercer 发布了与此类似的解决方案菲尔·哈克的博客:

foreach (var item in Model.Select((value, i) => new { i, value }))
{
    var value = item.value;
    var index = item.i;
}

这会给你带来物品(item.value) 及其索引 (item.i) 通过使用LINQ 的这种超载Select:

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

The new { i, value }正在创建一个新的匿名对象.

可以通过使用避免堆分配ValueTuple如果您使用的是 C# 7.0 或更高版本:

foreach (var item in Model.Select((value, i) => ( value, i )))
{
    var value = item.value;
    var index = item.i;
}

您还可以消除item.通过使用自动解构:

foreach (var (value, i) in Model.Select((value, i) => ( value, i )))
{
    // Access `value` and `i` directly here.
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获取 foreach 循环当前迭代的索引? 的相关文章

  • 删除文件的最后 10 个字符

    我想删除文件的最后 10 个字符 说一个字符串 hello i am a c learner 是文件内的数据 我只是希望该文件是 hello i am a 文件的最后 10 个字符 即字符串 c learner 应在文件内消除 解决方案 将
  • 结构化绑定中缺少类型信息

    我刚刚了解了 C 中的结构化绑定 但有一件事我不喜欢 auto x y some func is that auto正在隐藏类型x and y 我得抬头看看some func的声明来了解类型x and y 或者 我可以写 T1 x T2 y
  • BASIC 中的 C 语言中的 PeekInt、PokeInt、Peek、Poke 等效项

    我想知道该命令的等效项是什么Peek and Poke 基本和其他变体 用 C 语言 类似PeekInt PokeInt 整数 涉及内存条的东西 我知道在 C 语言中有很多方法可以做到这一点 我正在尝试将基本程序移植到 C 语言 这只是使用
  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现
  • 在OpenGL中,我可以在坐标(5, 5)处精确地绘制一个像素吗?

    我所说的 5 5 正是指第五行第五列 我发现使用屏幕坐标来绘制东西非常困难 OpenGL 中的所有坐标都是相对的 通常范围从 1 0 到 1 0 为什么阻止程序员使用屏幕坐标 窗口坐标如此严重 最简单的方法可能是通过以下方式设置投影以匹配渲
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使

随机推荐

  • Kinetic js 中的可编辑文本选项

    我想添加Textbox或可编辑元素 为用户提供编辑文本的选项 这是我当前的代码 var text new Kinetic Text text Sample Text gt i want to edit this text x 50 y 10
  • OPENMP F90/95 嵌套 DO 循环 - 串行实现的问题得到改进

    我已经进行了一些搜索 但找不到任何与我的问题相关的内容 很抱歉 如果我的问题是多余的 无论如何 正如标题所述 我在代码的串行实现方面无法获得任何改进 我需要并行化的代码片段如下 这是带有 OpenMP 的 Fortran90 do n 1
  • 为什么当我添加节点时我的 cassandra 吞吐量没有提高?

    这是一个新手问题 我尝试做功课 但我一直在尝试了解 cassandra 如何像广告中那样线性扩展 当我针对单个 cassandra 节点运行时 我获得了合理的插入率 以下是一些相关信息 CentOS 6 5 java 1 7 0 71 ca
  • 检查范围内的数据类型

    我正在尝试使用 VBA 函数验证用户选择的范围内所有单元格的数据类型是否相同 我有以下代码 简化 它在大多数情况下都有效 Dim vTempRange As Variant Dim vCell As Variant vTempRange D
  • 解析标记范围和未标记范围中的组件

    我尝试为 AutoFac 中的一些标记生命周期提供不同的服务 但似乎无法掌握它 我尝试过使用自定义生命周期每个匹配生命周期范围的实例 默认情况下 但这没有用 我编写了一个测试来说明我正在尝试做的事情 TestMethod public vo
  • 调整画布大小 - 保持最大宽度或高度,无需拉伸/填充

    我有一个关于在 javascript 中使用 canvas 的 html5 游戏的问题 我希望向玩家显示的画布包含 1920 的 canvas width 或 1080 的 canvas height 以便看不到填充 这意味着如果玩家使用其
  • 两个单选按钮同时选择

    我正在添加一个单选按钮divjsp页面的 但是新添加的单选按钮始终处于选择状态 当我单击第二个单选按钮时 它也会选择 有没有脚本可以写这个 div style padding left 15px div Entry Mode Code wa
  • 获取私人 bitbucket 存储库,给出 403 禁止

    执行时go get bitbucket org 我收到这个错误 yash jain projectname go get bitbucket org go bitbucket org https api bitbucket org 2 0
  • UICollectionView 收到索引路径不存在的单元格的布局属性

    我使用 UICollection 视图来显示网格布局中的项目 对于数据源 我使用 5 5 维数组 我还为节中的 numberOfItems 返回 5 为 numberOfSections 返回 5 然后我的应用程序也因以下错误而崩溃 UIC
  • 使用 C# 是否可以测试文件是否持有锁

    背景 我使用文件偏移量和文件流锁定 解锁方法来控制读 写访问 我正在使用以下代码来测试文件当前是否持有锁 try fs Lock RESERVED BYTE 1 fs Unlock RESERVED BYTE 1 rc 1 catch rc
  • 在 VBA 中使用 InStr 进行多字符串搜索

    我正在检查名称文本框是否以 Mr Mrs Ms 等开头 我创建了一个函数 但无法比较多个字符串 这是我的代码 Checking whether name is starts with Mr Mrs Ms Dr or not If Not F
  • 用外行人的话来说,什么是 Unobtrusive Javascript? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 用外行人的话来说 什么是 Unobtrusive Javascript 举一个例子可以很好地帮助我理解 查看维基百科文章 不引人注目的 JavaScript Unobtrusiv
  • git merge:删除我想保留的文件!

    如何在 git 中合并两个分支 同时保留必要的来自分支的文件 合并两个分支时 如果一个文件在一个分支中被删除 而在另一个分支中没有被删除 则该文件最终将被删除 例如 当您创建新分支时 master 中存在一个文件 您从 master 中删除
  • 创建较大集合的固定长度非重复排列

    我知道这个话题被广泛讨论 但我似乎找不到任何适合我需求的实现 我有以下字符集 abcdefgh 我想获得所有可能的排列或组合 不重复 但在有限 可变 字符集上 意思是如果我输入字符和数字2 结果应该是这样的 ab ba ac ca ad d
  • 将原始输入变量除以数字时出现 Python TypeError

    我想将输入的磅重量转换为千克 但出现以下错误 类型错误 不支持的操作数类型 unicode 和 float My code lbweight raw input Current Weight lb kgweight lbweight 2 2
  • 挂载前判断网络共享是否存在

    我正在开发一种工具 可以根据用户连接的无线网络自动安装网络卷 安装卷很简单 NSURL volumeURL The URL to the network volume Attempt to mount the volume FSVolume
  • Springboot异常处理程序没有捕获异常

    在 Spring Boot 和 Rest 应用程序中 我配置了一个异常处理程序 如下所示 如果在请求使其停止服务后抛出异常 它可以正常工作 Rest api 需要 application json 的内容类型 如果我不将该内容类型标头发送到
  • 用 Java 处理条形码扫描

    我想让我的应用程序对扫描的条形码做出反应以触发按钮按下 例如 用户可以扫描 打印 条形码来激活打印按钮 条形码将被视为用户输入了一些文本 我不确定扫描仪是否会被设置为在末尾附加一个输入或一个选项卡或什么都没有 所以我不想在此基础上做出假设
  • 将等高线添加到 3D 绘图

    我正在使用 R 编程语言 我使用 plotly 库制作了以下 3 维图 library dplyr library plotly my function lt function x y final value 1 x 2 100 y x 2
  • 如何获取 foreach 循环当前迭代的索引?

    在 C 中是否有一些我没有遇到过的罕见语言构造 比如我最近学到的一些 一些在 Stack Overflow 上 来获取表示 foreach 循环当前迭代的值 例如 我目前根据情况做这样的事情 int i 0 foreach Object o