目前对我来说,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>即可。
答案 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”方法,它不是Enumerable
或Queryable
的成员,也没有理解语法。
而且,最重要的是,它修改了源(列表),这不是LINQ to Objects所做的事情。
我会说“不”。
答案 4 :(得分:0)
在您发布的示例中,您没有使用LINQ。 ForEach方法只是迭代可枚举数据类型中的项而不显式编写循环的好方法。
答案 5 :(得分:-2)
如果你试图证明LINQ是一个简历关键字,可能没有。但是该功能是在Linq功能的其余部分添加的,并且属于同一系列功能,因此排序:)