Konvertierung von System.Array in Liste

Letzte Nacht hatte ich geträumt, dass das Folgende unmöglich war. Aber im selben Traum sagte jemand von SO mir etwas anderes. Daher würde ich gerne wissen, ob es möglich ist, System.Array in List zu konvertieren

 Array ints = Array.CreateInstance(typeof(int), 5); ints.SetValue(10, 0); ints.SetValue(20, 1); ints.SetValue(10, 2); ints.SetValue(34, 3); ints.SetValue(113, 4); 

zu

 List lst = ints.OfType(); // not working 

   

Sparen Sie sich etwas Schmerz …

 using System.Linq; int[] ints = new [] { 10, 20, 10, 34, 113 }; List lst = ints.OfType().ToList(); // this isn't going to be fast. 

Kann auch nur …

 List lst = new List { 10, 20, 10, 34, 113 }; 

oder…

 List lst = new List(); lst.Add(10); lst.Add(20); lst.Add(10); lst.Add(34); lst.Add(113); 

oder…

 List lst = new List(new int[] { 10, 20, 10, 34, 113 }); 

oder…

 var lst = new List(); lst.AddRange(new int[] { 10, 20, 10, 34, 113 }); 

Es gibt auch eine Konstruktorüberladung für List, die funktionieren wird … Aber ich denke, das würde ein stark typisiertes Array erfordern.

 //public List(IEnumerable collection) var intArray = new[] { 1, 2, 3, 4, 5 }; var list = new List(intArray); 

… für Array-class

 var intArray = Array.CreateInstance(typeof(int), 5); for (int i = 0; i < 5; i++) intArray.SetValue(i, i); var list = new List((int[])intArray); 

Interessanterweise beantwortet niemand die Frage, OP verwendet kein stark typisiertes int[] sondern ein Array .

Sie müssen das Array zu dem, was es tatsächlich ist, ein int[] , dann können Sie ToList :

 List intList = ((int[])ints).ToList(); 

Beachten Sie, dass Enumerable.ToList den Enumerable.ToList aufruft, der zunächst prüft, ob das Argument in ICollection (das ein Array implementiert) umgewandelt werden kann, und dann die effizientere ICollection.CopyTo Methode anstelle der Aufzählung der Sequenz verwendet.

Die einfachste Methode ist:

 int[] ints = new [] { 10, 20, 10, 34, 113 }; List lst = ints.ToList(); 

oder

 List lst = new List(); lst.AddRange(ints); 

in vb.net tun Sie das einfach

 mylist.addrange(intsArray) 

oder

 Dim mylist As New List(Of Integer)(intsArray) 

Wenn Sie ein Array von Listen als Liste zurückgeben möchten, können Sie Folgendes tun.

 using System.Linq; public List DaysOfWeek { get { return Enum.GetValues(typeof(DayOfWeek)) .OfType() .ToList(); } } 

Verwenden Sie einfach die vorhandene Methode .. .ToList ();

  List listArray = array.ToList(); 

KUSS (HALTEN SIE ES EINFACH SIR)

Sie können das grundsätzlich so machen:

 int[] ints = new[] { 10, 20, 10, 34, 113 }; 

Das ist Ihr Array, und dann können Sie Ihre neue Liste wie folgt aufrufen:

  var newList = new List(ints); 

Sie können dies auch für komplexe Objekte tun.

Du kannst es einfach deinem Code geben:

 Array ints = Array.CreateInstance(typeof(int), 5); ints.SetValue(10, 0); ints.SetValue(20, 1); ints.SetValue(10, 2); ints.SetValue(34, 3); ints.SetValue(113, 4); int[] anyVariable=(int[])ints; 

Dann können Sie einfach die AnyVariable als Ihren Code verwenden.

Ich hoffe, das ist hilfreich.

 enum TESTENUM { T1 = 0, T2 = 1, T3 = 2, T4 = 3 } 

Stringwert erhalten

 string enumValueString = "T1"; List stringValueList = typeof(TESTENUM).GetEnumValues().Cast().Select(m => Convert.ToString(m) ).ToList(); if(!stringValueList.Exists(m => m == enumValueString)) { throw new Exception("cannot find type"); } TESTENUM testEnumValueConvertString; Enum.TryParse(enumValueString, out testEnumValueConvertString); 

get Integer-Wert

  int enumValueInt = 1; List enumValueIntList = typeof(TESTENUM).GetEnumValues().Cast().Select(m => Convert.ToInt32(m) ).ToList(); if(!enumValueIntList.Exists(m => m == enumValueInt)) { throw new Exception("cannot find type"); } TESTENUM testEnumValueConvertInt; Enum.TryParse(enumValueString, out testEnumValueConvertInt);