是否可以用LINQ(foreach
)中的lambda表达式替换.Select)
循环?
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 */);
答案 0 :(得分:12)
没有Linq等同于foreach,虽然自己很容易实现它。
Eric Lippert对Linq本身没有实现的原因进行了很好的描述here。
但是,如果您的收藏集是一个列表(它似乎在您的示例中),您可以使用List.ForEach:
myList.ForEach(item => Console.WriteLine(item));
答案 1 :(得分:4)
对于任何IEnumerable
,您可以执行以下操作:
items.Any(item =>
{
Console.WriteLine(item);
return false;
}
但这绝对是错的!就像用鞋子敲钉子一样。 在语义上,它没有意义。
答案 2 :(得分:2)
改为使用List.ForEach。
答案 3 :(得分:2)
您可以使用List<T>.ForEach
方法。
l.ForEach(i => Console.WriteLine(i));
答案 4 :(得分:1)
List.ForEach使用action delegate。从此以后,这将是正确的选择。