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


77

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


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

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>();

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)


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()


10

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

        object[] testArray = new object[] { "blah", "blah2" };
        List<object> testList = new List<object>(testArray);

5
private List<object> ConvertArrayToList(object[] array)
{
  List<object> list = new List<object>();

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

  return list;
}

3

Wenn Array-Element und Listenelement identisch sind

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

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!


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});


0

Auf diese Weise können Sie ein Objekt senden:

private List<object> ConvertArrayToList(dynamic array)

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);
  }

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.