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系列课程》