23 votes

Remplir La Liste<string> avec la même valeur avec LINQ

Je veux remplir un List<string> avec la même chaîne de valeur pour un nombre de fois spécifié.

En ligne droite C# c'est:

List<string> myList = new List<string>();
for (int i = 0; i < 50; ++i)
{
    myList.Add("myString");
}

Est-il possible de faire cela avec LINQ?

40voto

Lasse V. Karlsen Points 148037

Oui, l'utilisation Énumérable.Répéter:

var myList = Enumerable.Repeat("myString", 50).ToList();

ou ceci:

var myList = new List<string>(Enumerable.Repeat("myString", 50));

Si vous disposez déjà d'une liste que vous souhaitez ajouter ces éléments, utilisez ceci:

myList.AddRange(Enumerable.Repeat("myString", 50));

Notez que ce n'est pas exactement LINQ en soi, mais il utilise les méthodes d'extension qui a été ajouté avec LINQ pour soutenir la nouvelle syntaxe. Avec juste LINQ (ie. le "à partir de ... sélectionnez" syntaxe), c'est un peu différent, alors je voudrais faire ceci:

var myList = (from idx in Enumerable.Range(0, 50) select "myString").ToList();

Cependant, je n'aurais pas fait cela, je serais plutôt d'utiliser les méthodes d' Enumerable.

Aussi, si vous souhaitez créer différentes chaînes, selon qu'il s'agit de la première, deuxième, troisième, etc. élément que vous ajoutez, vous pouvez utiliser Énumérable.La gamme à la place:

var myList = Enumerable.Range(0, 50).Select(idx => "myString#" + idx).ToList();

Créer une liste avec les cordes myString#0, myString#1, myString#2, ...

17voto

Jon Points 194296

Le meilleur outil pour le travail est - Enumerable.Repeat:

var myList = Enumerable.Repeat("myString", 50).ToList();

9voto

Matthew Watson Points 30804
var myList = Enumerable.Repeat("myString", 50).ToList();

4voto

Daren Thomas Points 26812

Essayez ceci:

Enumerable.Range(0, 50).Select(i => "myString").ToList()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X