隐藏

如何使用 GroupBy 方法通过使用基于方法的查询语法来查询-分组

发布:2021/7/9 17:30:33作者:管理员 来源:本站 浏览次数:1119

本主题中的示例说明如何使用 GroupBy 方法通过使用基于方法的查询语法来查询 AdventureWorks 销售模型 。 这些示例中使用的 AdventureWorks 销售模型基于 AdventureWorks 示例数据库中的 Contact、Address、Product、SalesOrderHeader 和 SalesOrderDetail 表生成。


本主题中的示例使用以下 using / Imports 语句:

C#


using System;

using System.Data;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Data.Objects;

using System.Globalization;

using System.Data.EntityClient;

using System.Data.SqlClient;

using System.Data.Common;


示例


下面的示例使用 GroupBy 方法来返回按邮政编码分组的 Address 对象。 这些结果将投影到一个匿名类型。

C#


using (AdventureWorksEntities context = new AdventureWorksEntities())

{

   var query = context.Addresses

       .GroupBy( address => address.PostalCode);


   foreach (IGrouping<string, Address> addressGroup in query)

   {

       Console.WriteLine("Postal Code: {0}", addressGroup.Key);

       foreach (Address address in addressGroup)

       {

           Console.WriteLine("\t" + address.AddressLine1 +

               address.AddressLine2);

       }

   }

}


示例


下面的示例使用 GroupBy 方法来返回按联系人姓氏的首字母分组的 Contact 对象。 这些结果还按姓氏的首字母进行排序,并投影到一个匿名类型。

C#


using (AdventureWorksEntities context = new AdventureWorksEntities())

{

   var query = context.Contacts

       .GroupBy(c => c.LastName.Substring(0,1))

       .OrderBy(c => c.Key);


   foreach (IGrouping<string, Contact> group in query)

   {

       Console.WriteLine("Last names that start with the letter '{0}':",

           group.Key);

       foreach (Contact contact in group)

       {

           Console.WriteLine(contact.LastName);

       }

   }

}


示例


下面的示例使用 GroupBy 方法来返回按客户 ID 分组的 SalesOrderHeader 对象。 同时还返回每个客户的销售数量。

C#


using (AdventureWorksEntities context = new AdventureWorksEntities())

{

   var query = context.SalesOrderHeaders

       .GroupBy(order => order.CustomerID);


   foreach (IGrouping<int, SalesOrderHeader> group in query)

   {

       Console.WriteLine("Customer ID: {0}", group.Key);

       Console.WriteLine("Order count: {0}", group.Count());


       foreach (SalesOrderHeader sale in group)

       {

           Console.WriteLine("   Sale ID: {0}", sale.SalesOrderID);

       }

       Console.WriteLine("");

   }

}


请参阅


   LINQ to Entities 中的查询