【问题标题】:Copying a range from a container to another container将范围从容器复制到另一个容器
【发布时间】:2016-06-30 05:08:14
【问题描述】:

我有一个具有数组访问权限的通用容器。我想将一个范围(例如元素 3 到 10)复制到另一个容器(在本例中为列表)。

我可以遍历容器,但我希望有更优雅的东西,而且可能更快。

有什么想法吗?

【问题讨论】:

  • 如果你的目标容器也是一个数组,Array.Copy 可能会更快msdn.microsoft.com/en-us/library/… 鉴于目标是一个列表,我相信迭代是你能做的最好的。
  • Array.Copy 仅从第一个元素复制。有没有办法让它认为第 n 个元素是第一个?
  • 那么,你的容器什么?
  • @SimonParker: Array.Copy有一个重载,可以从第N个源索引开始,复制到第M个目标索引共L个元素msdn.microsoft.com/en-us/library/…
  • @EricJ.,谢谢。我错过了超载。

标签: c# containers


【解决方案1】:

如果你的“容器”实现了IEnumerable,你可以使用LINQ:

var list = container.Skip(3).Take(7).ToList();

如果您想最终得到一个标准的List<T> 实例,那么没有什么比迭代更快更快了。

【讨论】:

  • 这是一个很好的答案。我不能使用它,因为我的容器没有实现 IEnumerable,但我非常喜欢这个答案,我可能不得不解决这个问题。
猜你喜欢
  • 1970-01-01
  • 2015-07-16
  • 1970-01-01
  • 1970-01-01
  • 2020-03-01
  • 1970-01-01
  • 2022-06-15
  • 2017-09-09
  • 1970-01-01
相关资源
最近更新 更多