Conversión de System.Array a List

Anoche soñé que lo siguiente era imposible. Pero en el mismo sueño, alguien de SO me dijo lo contrario. Por lo tanto, me gustaría saber si es posible convertir System.Array en List

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

a

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

Ahórrate un poco de dolor …

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

También puede simplemente …

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

o…

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

o…

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

o…

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

También hay una sobrecarga de constructor para List que funcionará … Pero supongo que esto requeriría una fuerte matriz tipada.

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

… para la clase Array

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

Curiosamente, nadie responde la pregunta, OP no está usando un int[] fuertemente int[] pero una Array .

Tienes que convertir la Array a lo que realmente es, una int[] , luego puedes usar ToList :

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

Tenga en cuenta que Enumerable.ToList llama al constructor de lista que primero verifica si el argumento puede ser transferido a ICollection (que implementa una matriz), luego usará el método ICollection.CopyTo más eficiente en lugar de enumerar la secuencia.

El método más simple es:

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

o

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

en vb.net solo haz esto

 mylist.addrange(intsArray) 

o

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

En el caso de que desee devolver una matriz de enumeraciones como una lista, puede hacer lo siguiente.

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

Simplemente use el método existente … .ToList ();

  List listArray = array.ToList(); 

KISS (MANTENGALO SIMPLE SIR)

Puedes hacer esto básicamente:

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

esta es su matriz, y que puede llamar a su nueva lista de esta manera:

  var newList = new List(ints); 

Puedes hacer esto también para objetos complejos.

Puedes darle a probar tu código:

 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; 

Entonces puedes usar anyVariable como tu código.

Espero que esto sea útil.

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

obtener valor de cadena

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

obtener un valor entero

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