2012-10-05 3 views

Répondre

13

Vous pouvez passer le dénombrable directement dans le constructor d'une nouvelle List<string> instace:

List<string> list = new List<string>(yourEnumerable); 

ou vous pouvez utiliser la méthode AddRange:

List<string> list = new List<string>(); 
list.AddRange(yourEnumerable); 

Cette réponse vous suppose que, en fait, avez déjà un IEnumerable<string>.
Si ce n'est pas le cas, votre seule option est une boucle:

List<string> list = new List<string>(); 
foreach(object item in yourEnumerable) 
    list.Add(item.ToString()); 

BTW: Vous dites:

un des moyens est de itearte par cela et ajouter chaque objet à une liste, mais ce processus varie en fonction du temps

Vous devez répéter l'énumération dans tous les cas. Sinon, comment auriez-vous toutes les valeurs? Dans les deux premiers exemples de codes que je vous ai donnés, l'énumération est effectuée dans la classe List<T>, mais cela se produit toujours.

+0

Merci pour votre aide, mais j'avais IEnumerable ce n'est pas IEnumerable donc je ne peux pas utiliser cette méthode. Oui, je sais que ça va aussi traverser, mais ça prendra moins de temps que de le faire manuellement ... comme je le fais ... – user1685652

+0

@ user1685652: Non, cela prendra tout autant de temps. Pourquoi devrait-il être plus rapide? –

+0

Désolé je n'ai pas posté le tout car je veux seulement le moyen de le convertir. Pour vous, je vous explique tout le processus d'abord besoin de le convertir en un objet de type DirectoryEntry puis d'accéder à ses propriétés, puis ajouter cela prend beaucoup de temps. – user1685652

Questions connexes