我有这段代码在控制台中显示List<int>
的内容。
List<int> mylist = new List<int>() { 1, 2, 3, 4, 5 };
mylist.Select(i => { Console.WriteLine(i); return false; });
但它没有显示任何内容。有没有办法在不使用.ForEach()
的情况下生成输出?
答案 0 :(得分:0)
Select
用于操纵您的可枚举。如果您想要执行某些操作,请使用foreach
或将数据加入到以下字符串中:
Console.WriteLine(String.Join("\r\n", myList));
String.Join(separator, collection)
会将您的集合加入到给定分隔符的字符串中。
可替换地:
myList.ForEach(x => Console.WriteLine(x));
根据评论:
结帐newList
。将存储select
的所选元素。在这种情况下,存储打印内容的动作。如果你调用它(第一个红色块)它将被执行。
这就是为什么它被称为select
而不是execute
。它是选择某事物到一个新变量。请注意,返回3也会被存储并执行&#34;&#34;随叫随到。
答案 1 :(得分:0)
延迟执行LINQ扩展,直到您开始使用结果。这就是为什么结果没有在控制台中显示的原因。以下代码正是您在线程中提到的,我添加了ToList()
,它开始消耗结果。
List<int> mylist = new List<int>() { 1, 2, 3, 4, 5 };
mylist.Select(i => { Console.WriteLine(i); return false; }).ToList();
答案 2 :(得分:0)
Linq使用deferred执行;在需要之前不会计算结果。
你永远不会使用Select
的结果;所以它没有被执行。
试试这个
mylist
.Select(i => { Console.WriteLine(i); return false; })
.Count();