LINQ副作用

10

在 LINQ (.Select) 中,是否可以用 lambda 表达式代替 foreach 循环?

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 */);
5个回答

14

虽然没有Linq的foreach等效语法,但自己实现一个相对容易。

Eric Lippert在这里很好地描述了为什么Linq本身没有实现此功能。

然而,如果您的集合是List(在您的示例中似乎是这样),则可以使用List.ForEach

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

1
我只是在linq链的末尾添加了.ToList(),然后是.ForEach(Console.WriteLine) - Harry Pehkonen

4

对于任何 IEnumerable,您可以执行以下操作:

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

但这是完全错误的!这就像用鞋子来敲钉子一样。语义上讲,这没有任何意义。

2
你可以使用 List<T>.ForEach 方法。
l.ForEach(i => Console.WriteLine(i));

2

1

List.ForEach使用Action委托。从现在开始,这将是正确的选择。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接