【发布时间】:2011-03-08 23:56:31
【问题描述】:
我想在一个项目数组中选择一系列项目。 例如,我有一个包含 1000 个项目的数组,我想“提取”第 100 到 200 个项目并将它们放入另一个数组中。
你能帮我怎么做吗?
【问题讨论】:
-
如果对您有帮助,请务必接受答案。
我想在一个项目数组中选择一系列项目。 例如,我有一个包含 1000 个项目的数组,我想“提取”第 100 到 200 个项目并将它们放入另一个数组中。
你能帮我怎么做吗?
【问题讨论】:
在 C# 8 中,范围运算符允许:
var dest = source[100..200];
(以及一系列其他开放式选项,从末尾开始计数等)
在此之前,LINQ 允许:
var dest = source.Skip(100).Take(100).ToArray();
或手动:
var dest = new MyType[100];
Array.Copy(source, 100, dest, 0, 100);
// source,source-index,dest,dest-index,count
【讨论】:
myArray[100:200],即myArray[100..200]
source[100..200] 语法排除范围内最后一项的 C# 语法不直观。具体来说,OP要求提取项目100到200,其中应该包括项目200,即总共是101个项目。 @MarcGravell 的解决方案不包括第 200 项。