使用Linq选择显示数据

时间:2017-03-28 07:20:31

标签: c# linq

我有这段代码在控制台中显示List<int>的内容。

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

但它没有显示任何内容。有没有办法在不使用.ForEach()的情况下生成输出?

3 个答案:

答案 0 :(得分:0)

Select用于操纵您的可枚举。如果您想要执行某些操作,请使用foreach或将数据加入到以下字符串中:

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

String.Join(separator, collection)会将您的集合加入到给定分隔符的字符串中。

可替换地:

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

根据评论:

enter image description here

结帐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();