2010-03-09 55 views

回答

13

如果你有C#3,使用Take擴展方法:

var list = new [] {1, 2, 3, 4, 5}; 

var shortened = list.Take(3); 

參見:http://msdn.microsoft.com/en-us/library/bb503062.aspx

如果你有C#2,你可以寫等價的:

static IEnumerable<T> Take<T>(IEnumerable<T> source, int limit) 
{ 
    foreach (T item in source) 
    { 
     if (limit-- <= 0) 
      yield break; 

     yield return item; 
    } 
} 

的唯一不同的是它不是擴展方法:

var shortened = SomeClass.Take(list, 3); 
6

您可以使用以

myList.Take(3); 
1

你可以使用LINQ

List<int> myList = new List<int>(); 

myList.Add(1); 
myList.Add(2); 
myList.Add(3); 
myList.Add(4); 
myList.Add(5); 
myList.Add(6); 

List<int> subList = myList.Take<int>(3).ToList<int>(); 
+0

在我看來,很多泛型可以推斷出來。 – 2010-03-09 17:08:36

+0

這可以通過@Dave的評論簡化爲myList.Take(3).ToList()。 – jrummell 2010-03-09 17:15:41

7

如果你沒有LINQ,嘗試:

public List<int> GetFirstNElements(List<int> list, int n) 
{ 
    n = Math.Min(n, list.Count); 
    return list.GetRange(0, n); 
} 

以其它方式使用取。

1
var newList = List.Take(3); 
+0

長度檢查不是必需的。 – 2010-03-09 17:08:18