Conversion de IEnumerable en liste

Je veux convertir IEnumerable en List . Comment puis-je faire ceci?

Vous pouvez le faire très simplement en utilisant LINQ.

Assurez-vous que cette utilisation est en haut de votre fichier C #:

 using System.Linq; 

Utilisez ensuite la méthode d’extension ToList .

Exemple:

 IEnumerable enumerable = Enumerable.Range(1, 300); List asList = enumerable.ToList(); 

Si vous travaillez avec un ancien System.Collections.IEnumerable classique au lieu de IEnumerable vous pouvez utiliser enumerable.Cast().ToList()

Si vous utilisez une implémentation de System.Collections.IEnumerable vous pouvez procéder comme suit pour le convertir en une List . La méthode suivante utilise la méthode Enumerable.Cast pour convertir IEnumberable en une List générique.

 //ArrayList Implements IEnumerable interface ArrayList _provinces = new System.Collections.ArrayList(); _provinces.Add("Western"); _provinces.Add("Eastern"); List provinces = _provinces.Cast().ToList(); 

Si vous utilisez la version générique IEnumerable , la conversion est simple. Puisque les deux sont des génériques, vous pouvez faire comme ci-dessous,

 IEnumerable values = Enumerable.Range(1, 10); List valueList = values.ToList(); 

Mais si IEnumerable est null, lorsque vous essayez de le convertir en une List , vous obtiendrez ArgumentNullException disant que Value ne peut pas être nul.

 IEnumerable values2 = null; List valueList2 = values2.ToList(); 

entrer la description de l'image ici

Par conséquent, comme mentionné dans l’ autre réponse , n’oubliez pas de faire une vérification null avant de la convertir en une List .

J’utilise une méthode d’extension pour cela. Ma méthode d’extension vérifie d’abord si l’énumération est null et si c’est le cas, crée une liste vide. Cela vous permet de faire une foreach dessus sans avoir à vérifier explicitement la null.

Voici un exemple très artificiel:

 IEnumerable ssortingngEnumerable = null; SsortingngBuilder csv = new SsortingngBuilder(); ssortingngEnumerable.ToNonNullList().ForEach(str=> csv.Append(str).Append(",")); 

Voici la méthode d’extension:

 public static List ToNonNullList(this IEnumerable obj) { return obj == null ? new List() : obj.ToList(); } 

autrement

 List list=new List(); IEnumerable enumerable =Enumerable.Range(1, 300); foreach (var item in enumerable ) { list.add(item); }