LINQ副作用

时间:2011-04-12 08:12:56

标签: c# linq foreach

是否可以用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 */);

5 个答案:

答案 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。从此以后,这将是正确的选择。