2

在 Calvert 和 Kulkarni 的“Essential LINQ”一书中,都使用了术语“LINQ 运算符”和“LINQ 关键字”。这两个术语有什么区别?

4

1 回答 1

3

运算符是 IEnumerable 接口上的一组扩展方法,提供查询功能,包括:过滤、投影、聚合、排序。它们可以应用于任何枚举和集合。

关键字是添加到语言(语言扩展)本身(C# 或 VB)的一组关键字,用于构造LINQ 表达式,在引擎盖下关键字调用相应的运算符。并非所有运算符都有相应的关键字,只有一些更常用的标准查询运算符具有专用的 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);
于 2012-08-16T17:23:42.973 回答