LINQ副作用

是否有可能用LINQ( .Select)的lambda表达式替换foreach循环?

 List l = {1, 2, 3, 4, 5}; foreach (int i in l) Console.WriteLine(i); 

至:

 List l = {1, 2, 3, 4, 5}; l.Select(/* print to console */); 

没有Linq等同于foreach,尽管自己很容易实现它。

Eric Lippert 在此详细描述了为什么Linq本身没有实现这一点。

但是,如果您的集合是一个List(它似乎在您的示例中),您可以使用List.ForEach :

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

对于任何IEnumerable ,您可以:

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

但这绝对是错的! 这就像用鞋子敲钉子一样。 在语义上,它没有意义。

请改用List.ForEach 。

您可以使用List.ForEach方法。

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

List.ForEach使用action delegate。 从此以后,这将是正确的选择。