欢迎光临
我们一直在努力

Linq数据分组全面描述

Linq有很多值得学习的地方,这里我们主要介绍Linq数据分组,包括介绍使用 Group 关键字等方面。

Linq数据分组(GROUP BY)

根据元素的一个或多个字段对查询结果中的元素进行分组。例如:按年级 (class year) 对学生进行Linq数据分组:


 
  1. Dim studentsByYear = From student In students _  
  2. Select student _  
  3. Group By year = student.Year _  
  4. Into Classes = Group 

输出结果的程序:


 
  1. For Each yearGroup In studentsByYear  
  2. Console.WriteLine(vbCrLf & "Year: " & yearGroup.year)  
  3. For Each student In yearGroup.Classes  
  4. Console.WriteLine(" " & student.Last & ", " & student.First)  
  5. Next  
  6. Next 

完整语法:


 
  1. Group [ listField1 [, listField2 [...] ] By keyExp1 [, keyExp2 [...] ]  
  2. Into aggregateList 

◆listField1, listField2 :可选。查询变量的一个或多个字段,这些查询变量显式标识要包括在分组结果中的字段。如果未指定任何字段,则查询变量的所有字段都包括在分组结果中。

◆keyExp1 :必需。一个表达式,标识用于确定元素的分组的键。可以指定多个键来指定一个组合键。

◆keyExp2 :可选。一个或多个附加键,与 keyExp1 组合在一起,创建一个组合键。

◆aggregateList :必需。一个或多个表达式,标识如何对组进行聚合。若要为分组结果标识一个成员名称,请使用 Group 关键字,该关键字可以:Into Group

Linq数据分组例如:


 
  1. Dim ***层_分组 = From cust In db.Customers _  
  2. Group By 国家 = cust.Country _  
  3. Into 第二层_分组元素 = Group, Count() _  
  4. Order By 国家  
  5.  
  6. For Each A分组 In ***层_分组  
  7. Console.WriteLine(A分组.国家 & "(" & A分组.Count & ")")  
  8.  
  9. For Each A元素 In A分组.第二层_分组元素  
  10. Console.WriteLine(vbTab + A元素.CompanyName + "," + A元素.ContactName)  
  11. Next  
  12. Next 

【编辑推荐】

  1. Linq表达式树简单介绍
  2. Linq和dLinq区别剖析
  3. Lambda表达式和Linq查询浅析
  4. Linq Lambda表达式概括
  5. Linq查询本质简单分析

赞(0) 打赏
未经允许不得转载:九八云安全 » Linq数据分组全面描述

评论 抢沙发