Wie konvertiere ich ein Array in eine Liste <Objekt> in C #?

77

Wie konvertiere ich ein Arrayin ein List<object>in C #?

BreakHead
quelle
13
Ich sehe nicht, was mit dieser Frage los ist. -5? "Ja wirklich?"
Filip Ekberg
6
+1, weil es eine einfache, effektive Frage ist, für die ich kein Duplikat auf SO gefunden habe. (Downvoters sollten kommentieren oder überdenken.) Stackoverflow.com/questions/1003841/… blog.stackoverflow.com/2009/06/podcast-58
JYelton
Mögliches Duplikat der Konvertierung von System.Array to List
Jim Fell

Antworten:

105
List<object> list = myArray.Cast<Object>().ToList();

Wenn der Typ der Array-Elemente ein Referenztyp ist, können Sie die .Cast<object>()seit C # 4 hinzugefügte Schnittstellen-Kovarianz weglassen, dh eine IEnumerable<SomeClass>kann als behandelt werden IEnumerable<object>.

List<object> list = myArray.ToList<object>();
CodesInChaos
quelle
29
Stellen Sie sicher, dass Sie System.Linq
Nestor Ledon
Funktioniert das nur in VS2015? Unter VS2012: 'System.Array' enthält keine Definition für 'Cast' und es konnte keine Erweiterungsmethode 'Cast' gefunden werden, die ein erstes Argument vom Typ 'System.Array' akzeptiert (fehlt Ihnen eine using-Direktive oder eine Assemblyreferenz? )
Ajeh
Danke fürList<object> list = myArray.ToList<object>();
samir105
39

Verwenden Sie den Konstruktor: new List<object>(myArray)

Dan Puzey
quelle
2
Eine schöne Sache an diesem Stil ist, dass er die Liste erstellt und zurückgibt, sodass Sie weitere Methoden anhängen können (z .Contains(userName). B. ). Nützlich, um eine Menge Logik in eine einzeilige if-Anweisung zu packen :).
Patrick
13

List<object>.AddRange(object[])sollte den Trick machen. Dadurch werden alle Arten von nutzloser Speicherzuweisung vermieden. Sie können auch Linq verwenden, ähnlich wie folgt:object[].Cast<object>().ToList()

fjdumont
quelle
10

Der List <> -Konstruktor kann alles akzeptieren, was IEnumerable implementiert, daher ...

        object[] testArray = new object[] { "blah", "blah2" };
        List<object> testList = new List<object>(testArray);
Craig T.
quelle
5
private List<object> ConvertArrayToList(object[] array)
{
  List<object> list = new List<object>();

  foreach(object obj in array)
    list.add(obj);

  return list;
}
Christian
quelle
3

Wenn Array-Element und Listenelement identisch sind

List<object> list=myArray.ToList();
Prasanth VJ
quelle
Ich musste mit using System.Linq hinzufügen; damit es funktioniert; nicht sicher warum.
user3752281
2

Alles, was jeder sagt, ist richtig, also

int[] aArray = {1,2,3};
List<int> list = aArray.OfType<int> ().ToList();

würde aArray in eine Liste verwandeln, Liste. Das Größte, was in vielen Kommentaren fehlt, ist jedoch, dass Sie diese 2 using-Anweisungen an der Spitze Ihrer Klasse haben müssen

using System.Collections.Generic;
using System.Linq;

Ich hoffe das hilft!

Keith Davis
quelle
1

Sie können die Liste auch direkt mit einem Array initialisieren:

List<int> mylist= new List<int>(new int[]{6, 1, -5, 4, -2, -3, 9});
Frank
quelle
0

ein anderer Weg

List<YourClass> list = (arrayList.ToArray() as YourClass[]).ToList();
Md. Rashidul Hasan
quelle
0

Auf diese Weise können Sie ein Objekt senden:

private List<object> ConvertArrayToList(dynamic array)
Fábio Correia
quelle
0

Hier ist meine Version:

  List<object> list = new List<object>(new object[]{ "test", 0, "hello", 1, "world" });

  foreach(var x in list)
  {
      Console.WriteLine("x: {0}", x);
  }
Segelfisch009
quelle
0

Sie können dies versuchen,

using System.Linq;
string[] arrString = { "A", "B", "C"};
List<string> listofString = arrString.OfType<string>().ToList();

Hoffe, dieser Code hilft dir.

Nitika Chopra
quelle