LINQ之查询语法—group子句

group by子句返回的结果集跟我们之前的不大一样,我们之前返回的是IEnumerable的集合,但是,group by返回的是IGrouping<TKey, TElement>的结果集。
事实上,IGrouping也是继承了IEnumerable
 
public interface IGrouping<out TKey, out TElement> : IEnumerable<TElement>, 
	IEnumerable
同时,正如我们在select子句中说过的,group子句是两外一个可以作为LINQ查询结束的子句。
 
举个例子,假设我们有如下品牌:
"Exuviance", "Avene", "Baby Quasar", "Ecoya", "Alterna", "Ecru New York" 
 
我们想实现如下显示:
E:
Exuviance
Ecru New York
Ecoya
 
A:
Avene
Alterna
 
B:
Baby Quasar
可以建立以下查询:
 
string[] allBrands = new string[] { "Exuviance", "Avene", "Baby Quasar", "Ecoya", "Alterna", "Ecru New York" };

            var brands = from brand in allBrands
                         
                         group brand by brand[0];

            foreach (var brand in brands)
            {
                Console.WriteLine(brand.Key+":");
                foreach (var item in brand)
                {
                    Console.WriteLine(item);
                }
                Console.WriteLine();
            }
 

在讲看完orderby子句后,我们会让显示按照key来升序排序,以更符合要求。

同时在介绍完into子句后,我们还会介绍如何对每个组执行附加操作。

参考:webcast 《跟我一起学Visual Studio 2008系列课程》

原文地址:https://www.cnblogs.com/tian2010/p/2395253.html