在Calvert和Kulkarni的“Essential LINQ”一书中,使用了术语“LINQ operator”和“LINQ keyword”。这两个术语有什么区别?
答案 0 :(得分:3)
运算符是IEnumerable接口上的一组扩展方法,提供查询功能,包括:过滤,投影,聚合,排序。它们可以应用于任何枚举和集合。
关键字是一组添加到语言中的关键字(语言扩展)本身(C#或VB),用于构建LINQ expression,引擎盖关键字调用相应的运营商。并非所有运算符都有相应的关键字,只有一些更常用的标准查询运算符具有专用的C#和Visual Basic语言关键字语法,可以将它们作为查询表达式的一部分进行调用。
所以, 两者之间的区别在于它们给代码的不同形式(视觉影响) ,在引擎盖下调用相同的方法(运算符扩展方法) )。
来自msdn的例子:
string sentence = "the quick brown fox jumps over the lazy dog";
// Split the string into individual words to create a collection.
string[] words = sentence.Split(' ');
// Using query expression syntax.
var query = from word in words
group word.ToUpper() by word.Length into gr
orderby gr.Key
select new { Length = gr.Key, Words = gr };
// Using method-based query syntax.
var query2 = words.
GroupBy(w => w.Length, w => w.ToUpper()).
Select(g => new { Length = g.Key, Words = g }).
OrderBy(o => o.Length);