List.ForEach技术上是否是LINQ的一部分?

时间:2009-04-17 15:24:59

标签: c# linq

目前对我来说,LINQ只是一个松散而无定形的概念云,通常是关于数据访问,但也结合了lambda表达式,委托,匿名函数和扩展方法,它是关于字符串和集合操作,所以我想把它钉下来。

当我编写以下代码时,我可以说我“正在使用LINQ”吗?

List<string> words = new List<string>() { "one", "two", "three" };
words.ForEach(word => Console.WriteLine(word.ToUpper()));

e.g。 “ ForEach ”方法被广泛称为“LINQ方法”,但其主页位于 System.Collections.Generic.List 而不是 System.Linq < / strong>即可。

6 个答案:

答案 0 :(得分:12)

它不是LINQ的一部分 - 它存在于.NET 2.0中,远在LINQ之前。它类似于LINQ,但我不会说它是LINQ的一部分。

另一方面,如果您实现自己的IEnumerable<T>扩展方法ForEach(如在MoreLINQ中),那么可以被视为非标准的LINQ运算符。

答案 1 :(得分:3)

ForEach不是LINQ,它只是一个接受委托的方法。从.NET 2.0开始就一直存在。

答案 2 :(得分:2)

Linq表示“语言集成查询”。要真正“使用”linq,你需要一个像这样的结构:

var result = from word in words
                 where word.Length < 5
                 select word;

也就是说,linq所依赖的 IEnumerable + lazy evaluation + lamdba expression + closures 系统本身就足以保证它自己的流行语。说你可以使用lambda表达式并没有真正削减它,imo。举个例子就是这个样本。你可以使用linq,但是为什么当它同样好又短时:

var result = words.Where(w => w.Length < 5);

答案 3 :(得分:1)

接受代表不会成为LINQ。

Foreach不是“LINQ”方法,它不是EnumerableQueryable的成员,也没有理解语法。

而且,最重要的是,它修改了源(列表),这不是LINQ to Objects所做的事情。

我会说“不”。

答案 4 :(得分:0)

在您发布的示例中,您没有使用LINQ。 ForEach方法只是迭代可枚举数据类型中的项而不显式编写循环的好方法。

答案 5 :(得分:-2)

如果你试图证明LINQ是一个简历关键字,可能没有。但是该功能是在Linq功能的其余部分添加的,并且属于同一系列功能,因此排序:)