Je liste des Guid deComment copier Liste to Array
List<Guid> MyList;
Je dois copier son contenu tableau
Guid[]
S'il vous plaît me recommander une solution assez
Je liste des Guid deComment copier Liste to Array
List<Guid> MyList;
Je dois copier son contenu tableau
Guid[]
S'il vous plaît me recommander une solution assez
Comme Luke dit dans commentaires, le type particulier List<T>
a déjà une méthode ToArray()
. Mais si vous utilisez C# 3.0, vous pouvez tirer parti de la méthode d'extension ToArray()
sur une instance IEnumerable
(qui comprend IList
, IList<T>
, collections, d'autres tableaux, etc.)
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
En ce qui concerne votre deuxième question:
Vous pouvez utiliser la méthode Select
pour effectuer la projection nécessaire:
var list = new List<MyClass> {new MyClass(), new MyClass()};
Guid[] array = list.Select(mc => mc.value).ToArray();
Muchas gracias. –
'Liste
@Luke: Très bon point! J'ai mis à jour ma réponse en conséquence. Merci. –
Vous devriez juste avoir à appeler MyList.ToArray() pour obtenir un tableau des éléments.
Utilisation du Enumerable.ToArray() Extension Method vous pouvez faire:
var guidArray = MyList.ToArray();
Si vous utilisez encore C# 2.0, vous pouvez utiliser la méthode List.ToArray. La syntaxe est la même (sauf qu'il n'y a pas de mot-clé var
dans C# 2.0).
La nouvelle façon (en utilisant des extensions ou la méthode ToArray() sur les listes génériques en .Net 2.0):
Guid[] guidArray = MyList.ToArray();
L'ancienne:
Guid[] guidArray = new guidArray[MyList.Length];
int idx = 0;
foreach (var guid in MyList)
{
guidArray[idx++] = guid;
}
C# 2.0 a 'List.ToArray', qui utilise' System.Array.Copy' –
Je suppose que je montre mon âge. :-) – tvanfosson
Une autre option, en plus Guid[] MyArray = MyList.ToArray()
:
Guid[] MyArray = new Guid[MyList.Count]; // or wherever you get your array from
MyList.CopyTo(MyArray, 0);
Cette solution pourrait être mieux si, pour une raison quelconque, vous avez déjà un properly- taille tableau et simplement vouloir le peupler (plutôt que de construire un nouveau, comme le fait List<T>.ToArray()
).
Une autre question, MyClass { Valeur de guidage; } Liste Comment copier la propriété Guid au tableau de Guid? Je ne veux pas utiliser l'instruction d'itération –
Je ne suis pas à 100% sur l'étiquette de SO, mais il pourrait être préférable de poser une nouvelle question comme nouvelle question. Je peux me tromper. –