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
方法。
l.ForEach(i => Console.WriteLine(i));
List.ForEach使用action delegate。 从此以后,这将是正确的选择。