2013-06-05 9 views
23

Desidero popolare uno List<string> con lo stesso valore di stringa per un numero specificato di volte.Lista Popolare <string> con lo stesso valore con LINQ

Nel dritto C# che è:

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

E 'possibile fare questo con LINQ?

+0

http://stackoverflow.com/questions/9361598/populate-a-list-with-a-specific-range-of-numbers-by-using-linq – sarwar026

risposta

39

Sì, utilizzare Enumerable.Repeat:

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

o questo:

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

Se avete un elenco esistente che si desidera aggiungere questi elementi a, utilizzare questo:

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

Si noti che questo non è esattamente LINQ di per sé, ma utilizza i metodi di estensione che è stato aggiunto insieme a LINQ a supp ort la nuova sintassi. Con solo LINQ (. Vale a dire la "dal ... selezionare" sintassi), è un po 'diverso, quindi vorrei fare questo:

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

Tuttavia, non vorrei realtà fare questo, ho preferirei utilizzare i metodi di Enumerable.

Inoltre, se si desidera creare diversi stringhe, a seconda se si tratta della prima, seconda, terza, ecc elemento che si sta aggiungendo, è possibile utilizzare Enumerable.Range invece:

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

Will creare una lista con le corde myString#0, myString#1, myString#2, ...

+1

È brillante – CSL

+1

@Lasse Una spiegazione molto dettagliata. Molte grazie. –

+3

Whoa, whoa, whoa! Sembra che abbia una buona ragione per smettere di usare 'Enumerable.Range (0, qty) .Seleziona (n =>" myString ")' now ... :) – fjdumont

17

lo strumento migliore per il lavoro è Enumerable.Repeat:

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

Prova questo:

Enumerable.Range(0, 50).Select(i => "myString").ToList() 
9
var myList = Enumerable.Repeat("myString", 50).ToList(); 
+3

Darn, ninjaed by @Jon;) –

+0

+1 uno, Nondimeno :) –

+0

Anche Ninja +1 è il primo! ;-) – Jon

Problemi correlati