LINQ 副作用

发布于 2024-11-01 05:09:15 字数 300 浏览 2 评论 0原文

是否可以用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

好多鱼好多余 2024-11-08 05:09:15

尽管自己实现 foreach 相当容易,但没有与 foreach 等效的 Linq。

Eric Lippert 在此处给出了很好的描述为什么 Linq 本身没有实现这一点。

但是,如果您的集合是列表(在您的示例中似乎如此),则可以使用 List.ForEach

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

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:

myList.ForEach(item => Console.WriteLine(item));
一直在等你来 2024-11-08 05:09:15

对于任何 IEnumerable,您可以这样做:

items.Any(item =>
{
    Console.WriteLine(item);
    return false;
}

但这将是完全错误的!这就像用鞋子去钉钉子一样。
从语义上讲,它没有意义。

For any IEnumerable, you can do:

items.Any(item =>
{
    Console.WriteLine(item);
    return false;
}

But this would be utterly wrong! It's like using a shoe to hammer the nail.
Semantically, it does not make sense.

揽月 2024-11-08 05:09:15

请改用 List.ForEach

Use List.ForEach instead.

水溶 2024-11-08 05:09:15

您可以使用List.ForEach 方法。

l.ForEach(i => Console.WriteLine(i));

You can use the List<T>.ForEach method.

l.ForEach(i => Console.WriteLine(i));
若水微香 2024-11-08 05:09:15

List.ForEach 使用操作委托。今后这将是正确的选择。

List.ForEach uses action delegate. Henceforth that will the right choice.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文