340 Stimmen

Umwandlung von IEnumerable in Liste

Ich möchte konvertieren von IEnumerable<Contact> à List<Contact> . Wie kann ich das tun?

555voto

vcsjones Punkte 134300

Sie können dies sehr einfach mit LINQ tun.

Stellen Sie sicher, dass diese Verwendung am Anfang Ihrer C#-Datei steht:

using System.Linq;

Verwenden Sie dann die ToList Erweiterungsmethode.

Beispiel:

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

218voto

cordialgerm Punkte 8203

Für den Fall, dass Sie mit einem normalen alten System.Collections.IEnumerable anstelle von IEnumerable<T> können Sie enumerable.Cast<object>().ToList()

23voto

Nipuna Punkte 6086

Wenn Sie eine Implementierung von System.Collections.IEnumerable können Sie wie folgt vorgehen, um sie in eine List . Die folgenden Verwendungen Enumerable.Cast Methode zur Konvertierung IEnumberable zu einer generischen List .

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

List<string> provinces = _provinces.Cast<string>().ToList();

Wenn Sie die generische Version verwenden IEnumerable<T> Die Umstellung ist einfach. Da beide Generika sind, können Sie wie unten tun,

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

Aber wenn die IEnumerable null ist, wenn Sie versuchen, sie in eine List erhalten Sie ArgumentNullException mit der Aussage Wert kann nicht null sein.

IEnumerable<int> values2 = null;
List<int> valueList2 = values2.ToList();

enter image description here

Daher wird, wie in der andere Antwort denken Sie daran, eine null prüfen, bevor sie in eine List .

6voto

Craig B Punkte 313

Ich verwende dafür eine Erweiterungsmethode. Meine Erweiterungsmethode prüft zunächst, ob die Aufzählung null ist, und erstellt in diesem Fall eine leere Liste. Dies ermöglicht es Ihnen, eine foreach auf sie zu tun, ohne explizit für null zu überprüfen.

Hier ein sehr erfundenes Beispiel:

IEnumerable<string> stringEnumerable = null;
StringBuilder csv = new StringBuilder();
stringEnumerable.ToNonNullList().ForEach(str=> csv.Append(str).Append(","));

Hier ist die Erweiterungsmethode:

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

6voto

NourAldienArabian Punkte 109

Andere Art

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

IEnumerable<int> enumerable =Enumerable.Range(1, 300);  

foreach (var item in enumerable )  
{     
  list.Add(item);  
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X