是否有可能用LINQ(.Select)
)中的lambda表达式代替foreach
循环?LINQ的副作用
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 */);
是否有可能用LINQ(.Select)
)中的lambda表达式代替foreach
循环?LINQ的副作用
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 */);
虽然自己实现一个相当容易,但没有任何Linq相当于foreach。
Eric Lippert给出了一个很好的描述here为什么这不是在Linq本身实现的。
但是,如果你的收藏是一个List(这似乎是在你的例子),你可以使用List.ForEach:
myList.ForEach(item => Console.WriteLine(item));
使用List.ForEach来代替。
可以使用List<T>.ForEach
方法。
l.ForEach(i => Console.WriteLine(i));
List.ForEach使用动作委托。从此,这将是正确的选择。
对于任何IEnumerable
,你可以这样做:
items.Any(item =>
{
Console.WriteLine(item);
return false;
}
但是,这将是完全错误的!这就像使用鞋子敲击指甲。 从语义上讲,它没有任何意义。
我刚刚在linq链的末尾添加了'.ToList()',然后'.ForEach(Console.WriteLine)'' – 2017-05-20 14:13:32