コンソール内にList<int>
の内容を表示するこのコードがあります。Linqを使用してデータを表示
List<int> mylist = new List<int>() { 1, 2, 3, 4, 5 };
mylist.Select(i => { Console.WriteLine(i); return false; });
しかし、何も表示されません。 .ForEach()
を使わずにこれを出力する方法はありますか?
コンソール内にList<int>
の内容を表示するこのコードがあります。Linqを使用してデータを表示
List<int> mylist = new List<int>() { 1, 2, 3, 4, 5 };
mylist.Select(i => { Console.WriteLine(i); return false; });
しかし、何も表示されません。 .ForEach()
を使わずにこれを出力する方法はありますか?
Select
は、列挙型を操作するために使用されます。あなたには、いくつかのアクションを実行したい場合はforeach
で行くか、そのような文字列にデータを結合:
Console.WriteLine(String.Join("\r\n", myList));
String.Join(separator, collection)
が与えられたセパレータで文字列にあなたのコレクションに参加します。また
:
myList.ForEach(x => Console.WriteLine(x));
コメントよると:
チェックアウトnewList
。 select
の選択された要素が保存されます。この場合、何かを印刷するアクションが保存されます。あなたがそれを呼び出すと(最初の赤いブロック)、それは実行されます。
だから、それはselect
といい、execute
ではありません。それは新しい変数に何かを何かを選択しています。 3を返すと、呼び出し時に格納され、実行されます。
LINQ拡張の実行は、結果の消費を開始するまで延期されます。これが結果がコンソールに表示されない理由です。以下のコードはあなたのスレッドで言及したものであり、結果を消費し始めるToList()
を追加しました。
List<int> mylist = new List<int>() { 1, 2, 3, 4, 5 };
mylist.Select(i => { Console.WriteLine(i); return false; }).ToList();
Linqは実行を非推奨にしています。結果が必要になるまで計算されません。
Select
の結果は決して使用しないでください。それは実行されません。
この
mylist
.Select(i => { Console.WriteLine(i); return false; })
.Count();
重複したマークから '選択 'を'すべて'に置き換えました – Toshi
にあなたが提案を持っている場合は、編集 – Usman