选择无法打印到控制台

Mar*_*ijn 5 c# linq select

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

foo
bar
baz
Run Code Online (Sandbox Code Playgroud)

但它不会打印任何东西.怎么会?代码是

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

ani*_*ine 11

使用ForEach:

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

通过使用Select,您基本上使用以下正文定义匿名函数.

Console.WriteLine(st); 
return 1;
Run Code Online (Sandbox Code Playgroud)

因此,只有在遍历列表时才会触发Console.WriteLine,如下所示:

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

foreach (var i in x){ }
Run Code Online (Sandbox Code Playgroud)

要么 x.ToList()

这是错误的,使用ForEach :)

  • 我到底怎么没注意到那里?你能否在答案中添加结果未枚举,并且可以额外调用toList();? (2认同)