繁体   English   中英

LINQ嵌套组语法

[英]LINQ Nested group syntax

MSDN在解释LINQ中的嵌套组方面做得非常糟糕: https//docs.microsoft.com/zh-cn/dotnet/csharp/linq/create-a-nested-group

举个例子:

IEnumerable<IGrouping<Gender, IGrouping<Job, Person>>> query =
    from person in peopleList
    group person by person.Gender into genderGroup
    from jobGroup (
      from person in genderGroup
      group person by person.Job
    )
    group jobGroup by genderGroup.Key;

我的问题:

  1. 在括号之间的from子句中,为什么源必须是sexGroup? 为什么不能像第一个from子句那样仅来自peopleList?
  2. 在最后一个子句中,将jobGroup的哪个属性与sexGroup.Keys比较时实际上是在查看它?
from person in genderGroup
group person by person.Job

此子查询会重复搜索相同性别的人,因此将其按工作分组,然后按工作分组,依次类推。 如果使用peopleList而不是genderGroup ,则查询将按作业对学生进行分组,并且不会有嵌套的分组。

group jobGroup by genderGroup.Key;

这将内部群体而不是通过外部群体的关键(性别)进行人员分组。 假设有四个工作jobGroup :男程序员,男设计师,女程序员和女设计师。 该查询按性别对这四个组进行分组,从而产生一个嵌套组:

male (outer group's key)
    male programmers 
    male designers
female (outer group's key)
    female programmers 
    female designers

为了更好地理解,建议您在Visual Studio中运行此小代码,并在LINQ语句中设置断点以查看会发生什么。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM