选择无法打印到控制台

时间:2013-02-20 14:09:32

标签: c# linq select

我希望将Select用作功能性的foreach。当我执行以下操作时,我希望它能够打印

foo
bar
baz
然而,它没有打印任何东西。怎么会?代码是

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

1 个答案:

答案 0 :(得分:11)

使用ForEach

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

通过使用Select,您基本上使用以下主体定义匿名函数。

Console.WriteLine(st); 
return 1;

因此,只有当您在列表中进行迭代时才会触发Console.WriteLine,如下所示:

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

foreach (var i in x){ }

x.ToList()

这是错误的,请使用ForEach:)