2017-03-28 12 views
0

コンソール内にList<int>の内容を表示するこのコードがあります。Linqを使用してデータを表示

List<int> mylist = new List<int>() { 1, 2, 3, 4, 5 }; 
mylist.Select(i => { Console.WriteLine(i); return false; }); 

しかし、何も表示されません。 .ForEach()を使わずにこれを出力する方法はありますか?

+1

にあなたが提案を持っている場合は、編集 – Usman

答えて

0

Selectは、列挙型を操作するために使用されます。あなたには、いくつかのアクションを実行したい場合はforeachで行くか、そのような文字列にデータを結合:

Console.WriteLine(String.Join("\r\n", myList)); 

String.Join(separator, collection)が与えられたセパレータで文字列にあなたのコレクションに参加します。また

myList.ForEach(x => Console.WriteLine(x)); 

コメントよると:

enter image description here

チェックアウトnewListselectの選択された要素が保存されます。この場合、何かを印刷するアクションが保存されます。あなたがそれを呼び出すと(最初の赤いブロック)、それは実行されます。

だから、それはselectといい、executeではありません。それは新しい変数に何かを何かを選択しています。 3を返すと、呼び出し時に格納され、実行されます。

+1

で答えを向上させることができます。しかし、出力を印刷_why_選択しないdownvoteする必要を試していませんか? – MetaColon

+0

@MetaColon自分の編集を確認してください。 – C4u

+1

魅惑的な行動。その情報をありがとう。 – MetaColon

0

LINQ拡張の実行は、結果の消費を開始するまで延期されます。これが結果がコンソールに表示されない理由です。以下のコードはあなたのスレッドで言及したものであり、結果を消費し始めるToList()を追加しました。

List<int> mylist = new List<int>() { 1, 2, 3, 4, 5 }; 
mylist.Select(i => { Console.WriteLine(i); return false; }).ToList(); 
0

Linqは実行を非推奨にしています。結果が必要になるまで計算されません。

Selectの結果は決して使用しないでください。それは実行されません。

この

mylist 
    .Select(i => { Console.WriteLine(i); return false; }) 
    .Count(); 
+0

重複したマークから '選択 'を'すべて'に置き換えました – Toshi

関連する問題