是否有可能用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