Last night I had dream that the following was impossible. But in the same dream, someone from SO told me otherwise. Hence I would like to know if it it possible to convert System.Array to 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); to
List<int> lst = ints.OfType<int>(); // not working 411 Answers
Save yourself some pain...
using System.Linq; int[] ints = new [] { 10, 20, 10, 34, 113 }; List<int> lst = ints.OfType<int>().ToList(); // this isn't going to be fast. Can also just...
List<int> lst = new List<int> { 10, 20, 10, 34, 113 }; or...
List<int> lst = new List<int>(); lst.Add(10); lst.Add(20); lst.Add(10); lst.Add(34); lst.Add(113); or...
List<int> lst = new List<int>(new int[] { 10, 20, 10, 34, 113 }); or...
var lst = new List<int>(); lst.AddRange(new int[] { 10, 20, 10, 34, 113 }); 13There is also a constructor overload for List that will work... But I guess this would required a strong typed array.
//public List(IEnumerable<T> collection) var intArray = new[] { 1, 2, 3, 4, 5 }; var list = new List<int>(intArray); ... for 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>((int[])intArray); 3Interestingly no one answers the question, OP isn't using a strongly typed int[] but an Array.
You have to cast the Array to what it actually is, an int[], then you can use ToList:
List<int> intList = ((int[])ints).ToList(); Note that Enumerable.ToList calls the list constructor that first checks if the argument can be casted to ICollection<T>(which an array implements), then it will use the more efficient ICollection<T>.CopyTo method instead of enumerating the sequence.
The simplest method is:
int[] ints = new [] { 10, 20, 10, 34, 113 }; List<int> lst = ints.ToList(); or
List<int> lst = new List<int>(); lst.AddRange(ints); 3In the case you want to return an array of enums as a list you can do the following.
using System.Linq; public List<DayOfWeek> DaysOfWeek { get { return Enum.GetValues(typeof(DayOfWeek)) .OfType<DayOfWeek>() .ToList(); } } in vb.net just do this
mylist.addrange(intsArray) or
Dim mylist As New List(Of Integer)(intsArray) 1You can do like this basically:
int[] ints = new[] { 10, 20, 10, 34, 113 }; this is your array, and than you can call your new list like this:
var newList = new List<int>(ints); You can do this for complex object too.
You can just give it try to your code:
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; Then you can just use the anyVariable as your code.
I know two methods:
List<int> myList1 = new List<int>(myArray); Or,
List<int> myList2 = myArray.ToList(); I'm assuming you know about data types and will change the types as you please.
1Just use the existing method.. .ToList();
List<int> listArray = array.ToList(); KISS(KEEP IT SIMPLE SIR)
I hope this is helpful.
enum TESTENUM { T1 = 0, T2 = 1, T3 = 2, T4 = 3 } get string value
string enumValueString = "T1"; List<string> stringValueList = typeof(TESTENUM).GetEnumValues().Cast<object>().Select(m => Convert.ToString(m) ).ToList(); if(!stringValueList.Exists(m => m == enumValueString)) { throw new Exception("cannot find type"); } TESTENUM testEnumValueConvertString; Enum.TryParse<TESTENUM>(enumValueString, out testEnumValueConvertString); get integer value
int enumValueInt = 1; List<int> enumValueIntList = typeof(TESTENUM).GetEnumValues().Cast<object>().Select(m => Convert.ToInt32(m) ).ToList(); if(!enumValueIntList.Exists(m => m == enumValueInt)) { throw new Exception("cannot find type"); } TESTENUM testEnumValueConvertInt; Enum.TryParse<TESTENUM>(enumValueString, out testEnumValueConvertInt);