LINQ 副作用
是否可以用 LINQ 中的 lambda 表达式替换 foreach
循环 (.Select)
)?
List<int> l = {1, 2, 3, 4, 5};
foreach (int i in l)
Console.WriteLine(i);
到:
List<int> l = {1, 2, 3, 4, 5};
l.Select(/* print to console */);
is it possible to substitute a foreach
loop with a lambda expression in LINQ (.Select)
)?
List<int> l = {1, 2, 3, 4, 5};
foreach (int i in l)
Console.WriteLine(i);
To:
List<int> l = {1, 2, 3, 4, 5};
l.Select(/* print to console */);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
尽管自己实现 foreach 相当容易,但没有与 foreach 等效的 Linq。
Eric Lippert 在此处给出了很好的描述为什么 Linq 本身没有实现这一点。
但是,如果您的集合是列表(在您的示例中似乎如此),则可以使用 List.ForEach:
There is no Linq equivalent of foreach, although it is fairly easy to implement one yourself.
Eric Lippert gives a good description here of why this was not implemented in Linq itself.
However, if your collection is a List (which it appears to be in your example), you can use List.ForEach:
对于任何
IEnumerable
,您可以这样做:但这将是完全错误的!这就像用鞋子去钉钉子一样。
从语义上讲,它没有意义。
For any
IEnumerable
, you can do:But this would be utterly wrong! It's like using a shoe to hammer the nail.
Semantically, it does not make sense.
请改用 List.ForEach。
Use List.ForEach instead.
您可以使用
List.ForEach
方法。You can use the
List<T>.ForEach
method.List.ForEach 使用操作委托。今后这将是正确的选择。
List.ForEach uses action delegate. Henceforth that will the right choice.