Vannacht heb ik gedroomd dat het volgende onmogelijk was. Maar in dezelfde droom vertelde iemand van SO me anders. Daarom zou ik graag willen weten of het mogelijk is om System.Array
te converteren naar 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);
naar
List<int> lst = ints.OfType<int>(); // not working
Antwoord 1, autoriteit 100%
Bespaar jezelf wat pijn…
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.
Kan ook gewoon…
List<int> lst = new List<int> { 10, 20, 10, 34, 113 };
of…
List<int> lst = new List<int>();
lst.Add(10);
lst.Add(20);
lst.Add(10);
lst.Add(34);
lst.Add(113);
of…
List<int> lst = new List<int>(new int[] { 10, 20, 10, 34, 113 });
of…
var lst = new List<int>();
lst.AddRange(new int[] { 10, 20, 10, 34, 113 });
Antwoord 2, autoriteit 20%
Er is ook een overbelasting van de constructor voor List die zal werken… Maar ik denk dat dit een sterk getypeerde array vereist.
//public List(IEnumerable<T> collection)
var intArray = new[] { 1, 2, 3, 4, 5 };
var list = new List<int>(intArray);
… voor Array-klasse
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);
Antwoord 3, autoriteit 16%
Interessant is dat niemand de vraag beantwoordt, OP gebruikt geen sterk getypte int[]
maar een Array
.
Je moet de Array
naar wat het eigenlijk is, een int[]
, dan kun je ToList
gebruiken:
List<int> intList = ((int[])ints).ToList();
Merk op dat Enumerable.ToList
roept de lijstconstructoraan die eerst controleert als het argument kan worden gecast naar ICollection<T>
(wat een array implementeert), dan zal het de efficiëntere ICollection<T>.CopyTo
-methodein plaats van de reeks op te sommen.
Antwoord 4, autoriteit 6%
De eenvoudigste methode is:
int[] ints = new [] { 10, 20, 10, 34, 113 };
List<int> lst = ints.ToList();
of
List<int> lst = new List<int>();
lst.AddRange(ints);
Antwoord 5, Autoriteit 3%
In het geval dat u een array van ENUM’s als een lijst wilt retourneren, kunt u het volgende doen.
using System.Linq;
public List<DayOfWeek> DaysOfWeek
{
get
{
return Enum.GetValues(typeof(DayOfWeek))
.OfType<DayOfWeek>()
.ToList();
}
}
Antwoord 6
U kunt dit in principe doen:
int[] ints = new[] { 10, 20, 10, 34, 113 };
Dit is uw array en dan kunt u uw nieuwe lijst als volgt bellen:
var newList = new List<int>(ints);
U kunt dit ook voor complex object doen.
Antwoord 7
in vb.net doe dit gewoon
mylist.addrange(intsArray)
of
Dim mylist As New List(Of Integer)(intsArray)
Antwoord 8
U kunt het gewoon geven met uw 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;
Dan kunt u gewoon de anyvariabele als uw code gebruiken.
Antwoord 9
Gebruik gewoon de bestaande methode.. .ToList();
List<int> listArray = array.ToList();
KUS(HOU HET EENVOUDIG HEER)
Antwoord 10
Ik ken twee methoden:
List<int> myList1 = new List<int>(myArray);
Of,
List<int> myList2 = myArray.ToList();
Ik ga ervan uit dat u op de hoogte bent van gegevenstypen en dat u de typen naar wens zult wijzigen.
Antwoord 11
Ik hoop dat dit nuttig is.
enum TESTENUM
{
T1 = 0,
T2 = 1,
T3 = 2,
T4 = 3
}
tekenreekswaarde ophalen
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);
gehele waarde ophalen
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);