ho lista di di GuidCome copiare List per Array
List<Guid> MyList;
ho bisogno di copiare il suo contenuto di Array
Guid[]
Si prega di raccomandare me una bella soluzione
ho lista di di GuidCome copiare List per Array
List<Guid> MyList;
ho bisogno di copiare il suo contenuto di Array
Guid[]
Si prega di raccomandare me una bella soluzione
Come Luke detto in commenti, il particolare tipo List<T>
ha già un metodo ToArray()
. Ma se si sta utilizzando C# 3.0, è possibile sfruttare il metodo ToArray()
estensione su qualsiasi IEnumerable
esempio (che comprende IList
, IList<T>
, collezioni, altri array, ecc)
var myList = new List<Guid> {Guid.NewGuid(), Guid.NewGuid()};
Guid[] array = myList.ToArray(); // instance method
IList<Guid> myList2 = new List<Guid> {Guid.NewGuid(), Guid.NewGuid()};
Guid[] array2 = myList2.ToArray(); // extension method
var myList3 = new Collection<Guid> {Guid.NewGuid(), Guid.NewGuid()};
Guid[] array3 = myList3.ToArray(); // extension method
quanto riguarda la tua seconda domanda:
È possibile utilizzare il metodo Select
per eseguire la proiezione necessaria:
var list = new List<MyClass> {new MyClass(), new MyClass()};
Guid[] array = list.Select(mc => mc.value).ToArray();
Muchas gracias. –
'Elenco
@Luke: ottimo punto! Ho aggiornato la mia risposta di conseguenza. Grazie. –
Si dovrebbe semplicemente chiamare MyList.ToArray() per ottenere un array di elementi.
Utilizzando il Enumerable.ToArray() Extension Method si può fare:
var guidArray = MyList.ToArray();
Se si sta ancora utilizzando C# 2.0 è possibile utilizzare il metodo List.ToArray. La sintassi è la stessa (eccetto che non c'è la parola chiave var
in C# 2.0).
Il nuovo modo (utilizzando le estensioni o il metodo ToArray() su liste generiche in Net 2.0):
Guid[] guidArray = MyList.ToArray();
Il vecchio modo:
Guid[] guidArray = new guidArray[MyList.Length];
int idx = 0;
foreach (var guid in MyList)
{
guidArray[idx++] = guid;
}
C# 2.0 ha 'List.ToArray', che usa' System.Array.Copy' –
Immagino di mostrare la mia età. :-) – tvanfosson
Ancora un'altra opzione, oltre a Guid[] MyArray = MyList.ToArray()
:
Guid[] MyArray = new Guid[MyList.Count]; // or wherever you get your array from
MyList.CopyTo(MyArray, 0);
Questa soluzione potrebbe essere migliore se, per qualsiasi motivo, si dispone già di un properly- array di dimensioni e semplicemente vuole popolarlo (piuttosto che costruirne uno nuovo, come fa List<T>.ToArray()
).
Un'altra domanda, MyClass { Valore guida; } Lista Come copiare la proprietà Guid nella matrice di Guid? Voglio dire non usare la frase di iterazione –
Non sono al 100% su etichetta di SO, ma potrebbe essere meglio porre una nuova domanda come una nuova domanda. Potrei sbagliarmi. –