2013-02-20 8 views
5

機能的なforeachとしてSelectを使用したいと考えていました。私が次のことをすると、それが印刷されると予想しました。選択がコンソールに印刷されない

foo 
bar 
baz 

ただし、何も印刷されません。どうして?あなたは基本的に以下のボディと無名関数を定義している選択して使用することにより

List<String> strings = new List<String>() { "foo", "bar", "baz" }; 
strings.ForEach(st => { Console.WriteLine(st); }); 

:コードは

List<String> strings = new List<String>(){"foo", "bar", "baz"}; 
strings.Select(st => { Console.WriteLine(st); return 1; }); 
+5

あなたは実際に '選択 'で列挙しません。 –

+2

Selectは、結果が実際に必要になるまで実行を延期します。 – jrajav

+0

Selectは、シーケンスの各要素を新しい形式に投影します。つまり、コレクション要素を別の種類に変換するために使用します。 –

答えて

11

使用するForEachです。

var x= strings.Select(st => { Console.WriteLine(st); return 1; }); 

foreach (var i in x){ } 

またはx.ToList()

そして、それは間違っている、:)のForEachを使用する:あなたはこのように、リストを反復処理しているときに、Console.WriteLineをのみトリガされます

Console.WriteLine(st); 
return 1; 

+2

どうしましたか?結果に列挙されていないという答えを追加できますか?また、それは余分な呼び出しtoList();でしょうか? – Martijn

+0

ああ、今私はこれを逃した方法を参照してください。リストはforeachを公開していますが、何らかの理由でIEnumerable は表示されません。 – Martijn

+0

@Martijn私はあなたが最初の混乱は_何らかの理由_の一部だと思う:) –

関連する問題