2013-06-18 36 views
10

私が達成しようとしているのは、ループを使用せずに複数のアイテムをリストに追加することです。1つのアイテムを同じリストに複数回追加する

リストに50個の数字を追加し、それらの数字のすべてが42と同じになるようにしたいと思います.50回実行される小さなループを作成して、何度も繰り返される。

List<int> listFullOfInts = new List<int>(); 
int addThis = 42; 
for(int i = 0; i < 50; i++) 
    listFullOfInts.Add(addThis); 

私がしようとしていることは、

listFullOfInts.AddRange(addThis, 50); 

これは少なくともLinqを使用していますか?私はこれを行う方法を見て漠然とした記憶がありますが、それを見つけることができません。何か案は?

+0

は、なぜあなたは、リストを使用しないことを使用することができますか? –

+0

@RuneFSそれは私がそれを実装した方法です:) – Sander

+0

私は "なぜあなたはループを使いたくないのですか?" (_need_コーヒー) –

答えて

32

あなたがRepeat使用することができます:あなたはすでにリストを持っていて、ToListで新しいものを作成したくない場合は

List<int> listFullOfInts = Enumerable.Repeat(42, 50).ToList(); 

Demo

を:

listFullOfInts.AddRange(Enumerable.Repeat(42, 50)); 
+4

+1も参照型で同じインスタンスへの参照が追加されるため、アイテムの変更は他のものに変更されます49 –

+0

これはまさに私が探していたものです!ありがとう! (私が許されるとすぐに答えとしてマークされます) – Sander

+0

これはループのどこかで使用されますが、表示されません。 –

2

することができますLINQは副作用がないのでLINQと直接関係しませんが、System.linq名前空間にあるものの一部を使用して必要なものを構築することができます。

public static void AddRepeated<T>(this List<T> self,T item, int count){ 
    var temp = Enumerable.Repeat(item,count); 
    self.AddRange(temp); 
} 

あなたは、あなたがあなたの記事で提案するよう

listFullOfInts.AddRepeated(addThis, 50); 
+1

は、 'addRange'ではなく' listFullOfInts.AddRepeated(addThis、50) 'であるべきです。 – mz8i

+0

はいそれはすべきです:) –

関連する問題