c# - Linq 重复 List<T> 中给定范围的每第 n 个元素

标签 c# linq

我有一个自定义对象列表,例如:

public class MyObject
{
    public int MyField { get; set; }
}

该列表有 12 个对象,其中 MyField 属性最初为 0,因此对象为:

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

我想每 n 次重复跳过 x 个项目。因此,如果我重复 2 并跳过 3,则新值应为:

1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0

如果我想重复 3 次并跳过 4 次,则新值将是:

1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0

是否可以使用 Linq 来做到这一点?

最佳答案

Linq 用于查询,而不是更新。您可以编写有副作用的 linq 方法,但由于惰性枚举和其他因素,直接的 forforeach 循环是首选:

int repeat = 2;
int skip = 3;
for(int i = 0; i < list.Count && repeat > 0; i += skip)
{
    list[i].MyField = 1;
    repeat--;
}

关于c# - Linq 重复 List<T> 中给定范围的每第 n 个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36770689/

相关文章:

C# Entity Framework Core - LINQ 检查一个数组在另一个数组中是否存在

c# - 将 Delphi+Assembler CRC32 实现翻译成 C#

c# - 知道子表单何时关闭

c# - DbFunctions DiffDays 给出了错误的答案

c# - SQL Linq 预留可用性

c# - 如何将此 LINQ 查询编写为单个查询?

c# - Microsoft Access 中的 bool 列和使用 linq 过滤数据

c# - 如何创建 2 个相关的下拉列表

c# - 我无法使用 C# 从 Mozilla 和 Opera 浏览器获取 url

c# - 如何在 Visual Studio 中解析 "NuGet package restore failed"?