LINQ运算符和LINQ关键字之间的区别

时间:2012-08-16 17:08:16

标签: c# linq

在Calvert和Kulkarni的“Essential LINQ”一书中,使用了术语“LINQ operator”和“LINQ keyword”。这两个术语有什么区别?

1 个答案:

答案 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);