2010-03-09 5 views

Répondre

13

Si vous avez C# 3, utilisez la méthode d'extension Take:

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

var shortened = list.Take(3); 

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

Si vous avez C# 2, vous pouvez écrire l'équivalent:

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

     yield return item; 
    } 
} 

Le seule différence est que ce n'est pas une méthode d'extension:

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

Vous pouvez utiliser Prenez

myList.Take(3); 
1

Vous pouvez avec 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

De nombreux génériques peuvent être déduits, à mon avis. –

+0

Cela pourrait être simplifié à myList.Take (3) .ToList() pour le commentaire de Dave. – jrummell

7

Si vous n'avez pas LINQ, essayez:

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

utiliser autrement prendre.

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

La vérification de la longueur n'est pas requise. –

Questions connexes