如何从列表中获取特定范围(3 - 7)的项目?

时间:2012-10-30 14:55:49

标签: c# list

从列表中选择特定范围内的所有项目并将其放入新列表中的最有效方法是什么?

List<DataClass> xmlList = new List<DataClass>();

这是我的List,我想将所有DataClass项放在范围(3 - 7)之间的新列表中。

最有效的方法是什么?一个foreach循环,每次计数++,直到他到达范围之间的项目并将这些项目添加到新列表?

4 个答案:

答案 0 :(得分:70)

您正在寻找的方法是GetRange

List<int> i = new List<int>();
List<int> sublist = i.GetRange(3, 4);

var filesToDelete = files.ToList().GetRange(2, files.Length - 2);

摘要摘要:

// Summary:
//     Creates a shallow copy of a range of elements in the source System.Collections.Generic.List<T>.
// Parameters:
//   index:
//     The zero-based System.Collections.Generic.List<T> index at which the range
//     starts.
//   count:
//     The number of elements in the range.

答案 1 :(得分:27)

如果由于任何原因您不想使用GetRange方法,您还可以使用LINQ编写以下内容。

List<int> list = ...
var subList = list.Skip(2).Take(5).ToList();

答案 2 :(得分:2)

List实现了一个CopyTo方法,允许您指定要复制的元素的起点和数量。我建议使用它。

请参阅:http://msdn.microsoft.com/en-us/library/3eb2b9x8.aspx

答案 3 :(得分:1)

在c#8中,您可以使用Range和Index而不是Linq进行跳过:

  

样本数组:

from (xxx){
    include "myFilename"
    expand('lang': $.resources.xxx,'numberOfInstances': '1' )
}
... similar blocks for other files...
  

要获得此结果(元素1,2,3)==>法国日本韩国

     

1:获取数组或列表的范围:

string[] CountryList = { "USA", "France", "Japan", "Korea", "Germany", "China", "Armenia"};  
  

2:定义范围对象

   var NewList=CountryList[1..3]
  

3:使用索引对象

Range range = 1..3;  
    var NewList=CountryList[range])