如何在c#中替换列表中的多个值?

Fan*_*ion 1 c# replace

如果我有一个包含 100 个整数的列表,如何在不使用循环的情况下将索引 20 到 50 处的值分配给长度为 31 的列表中的一组不同的值?来自 python,这很容易在没有循环的情况下完成,但我不确定是否可以在 c# 中完成。

Cai*_*ard 5

使用 LINQ,即“在我的代码中不使用循环”,您可以:

hundredInts.Take(19).Concat(thirtyoneInts).Concat(hundredInts.Skip(50));
Run Code Online (Sandbox Code Playgroud)

(如果您希望它作为列表或数组等返回,则在其末尾进行相关的 ToXXX 调用)

也许:

hundredInts.Select((n, i) => (i < 20 || i > 50) ? n : thirtyOneInts[i-20])
Run Code Online (Sandbox Code Playgroud)

或者内置的东西:

hundredInts.RemoveRange(20, 31).InsertRange(20, thirtyOneInts);
Run Code Online (Sandbox Code Playgroud)

  • 我真的不会告诉那些不懂 C# 的人 LINQ 是这个问题的解决方案。当我向人们解释 linq 没有魔法并且它*确实*使用循环时,人们会产生错误的想法并看我,就像我疯了一样 (3认同)