将System.Array转换为List

昨天晚上我有梦想,以下是不可能的。 但在同一个梦中,有人从另一个angular度告诉我。 因此,我想知道是否有可能将System.Array转换为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); 

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

节省一些痛苦…

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

也可以…

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

要么…

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

要么…

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

要么…

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

还有一个List的构造函数重载将工作…但我想这将需要一个强types的数组。

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

…为Array类

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

最简单的方法是:

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

要么

 List<int> lst = new List<int>(); lst.AddRange(ints); 

有趣的是没有人回答这个问题,OP没有使用强types的int[]而是一个Array

您必须将Array转换为实际的Arrayint[] ,那么您可以使用ToList

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

请注意, Enumerable.ToList调用首先检查参数是否可以转换为ICollection<T> (数组实现)的列表构造函数 ,然后使用更有效的ICollection<T>.CopyTo方法而不是枚举序列。

在vb.net只是做到这一点

 mylist.addrange(intsArray) 

要么

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

如果你想返回一个枚举数组作为列表,你可以执行以下操作。

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

只要使用现有的方法.. .ToList();

  List<int> listArray = array.ToList(); 

KISS(保持简单的SIR)

你可以试试看你的代码:

 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; 

那么你可以使用anyVariable作为你的代码。

我希望这是有帮助的。

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

获取string值

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

获取整数值

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

你可以这样做基本上:

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

这是你的数组,而且你可以像这样调用你的新列表:

  var newList = new List<int>(ints); 

你也可以为复杂的对象做这个。