2013-06-05 14 views
23

List<string>に同じ文字列値を指定した回数入力したいとします。ストレートのC#でLUMQで同じ値の<string>を取り込み

は、それは次のようになります。

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

それはLINQでこれを行うことは可能ですか?

+0

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

答えて

39

はい、Enumerable.Repeatを使用します。

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

またはこの:

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

既存のリストを持っている場合あなたがそれらの要素を追加したい、この使用:

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

をこれは正確にはLINQ自体ではありませんが、LINQと一緒に追加された拡張メソッドを使用していることに注意してください新しい構文を実行してください。 だけ LINQ(。すなわち "から...を選択し、" 構文)、それは少し違うのは、私はこれを行うだろうと:

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

しかし、私は実際にはこれをしないなり、I代わりにEnumerableのメソッドを使用します。また

、あなたはそれはあなたが追加している項目、第三、第1、第2、第などであるかどうかに応じて、異なる文字列を作成したい場合は、代わりにEnumerable.Rangeを使用することができます。

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

ウィル、myString#2、文字列myString#0myString#1でリストを作成...

+1

それは華麗です – CSL

+1

@Lasse非常に詳細な説明。どうもありがとう。 –

+3

おはようございます!私はEnumerable.Range(0、qty).Select(n => "myString") 'now ... :)を使用して停止する正当な理由があるように見えます – fjdumont

17

仕事に最適なツールがEnumerable.Repeatです:

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

これを試してみてください:

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

ダン、@Jon; ninjaed;) –

+0

+1、どれも少ない: –

+0

忍者+1も同様! ;-) – Jon