webentwicklung-frage-antwort-db.com.de

IList in Liste aufnehmen

Ich versuche, IList in List umzuwandeln, aber ich bekomme jedes Mal einen Fehler.

List<SubProduct> subProducts= Model.subproduct;

Model.subproduct gibt IList<SubProduct> zurück.

53
Pankaj

Versuchen

List<SubProduct> subProducts = new List<SubProduct>(Model.subproduct);

oder 

List<SubProduct> subProducts = Model.subproducts as List<SubProduct>;
107
Pbirkoff

Wie wäre es damit:

List<SubProduct> subProducts = Model.subproduct.ToList();
31
Mark Seemann

In meinem Fall musste ich dies tun, da keine der vorgeschlagenen Lösungen verfügbar war:

List<SubProduct> subProducts = Model.subproduct.Cast<SubProduct>().ToList();
8
bluish
List<SubProduct> subProducts= (List<SubProduct>)Model.subproduct;

Die implizite Konvertierung ist fehlgeschlagen, weil List<>IList implementiert, nicht umgekehrt. Sie können also IList<T> foo = new List<T>() sagen, aber nicht List<T> foo = (some IList-returning method or property).

3
Webleeuw

Alle anderen Antworten empfehlen, AddRange mit einer IList zu verwenden.

Eine elegantere Lösung, die das Casting vermeidet, ist die Implementierung einer Erweiterung von IList, um die Arbeit zu erledigen.

In VB.NET:

<Extension()>
Public Sub AddRange(Of T)(ByRef Exttype As IList(Of T), ElementsToAdd As IEnumerable(Of T))
   For Each ele In ElementsToAdd
      Exttype.Add(ele)
   Next
End Sub

Und in C #:

public void AddRange<T>(this ref IList<T> Exttype, IEnumerable<T> ElementsToAdd)
{
    foreach (var ele in ElementsToAdd)
    {
        Exttype.Add(ele);
    }
}
0
user11331434

Sie können die Liste mit Hilfe von iterieren:

var item = Model.subproduct[index];
0
Versatile
List<ProjectResources> list = new List<ProjectResources>();        
IList<ProjectResources> obj = `Your Data Will Be Here`;
list = obj.ToList<ProjectResources>();

Dies würde IList-Objekt in Listenobjekt konvertieren.

0
Hudhaifa Yoosuf