Linq 按元素和子元素分组

Linq group by element and a sub element

结构基本是这样的:

师傅:

  Id 
  DocNo
  Laws[]

规律如下:

LawNo
Id

我想按 DocNoLawNo 分组。

预期的字典键是:

{DocNo, LawNo}

期望值为

Master

我试过了,但按键与预期的不一样

master.GroupBy(x => new {x.DocNo, _LawNo = x.Laws.Select(y => y.LawNo).Distinct()});

谢谢

如果我没理解错的话,你可以先用SelectMany再用GroupBySelectManyLawNo变平为DocNo

master.SelectMany(x=>x.Laws,(x,y)=>new{x.DocNo,y.LawNo})
      .GroupBy(x=> new {x.DocNo,x.LawNo});

我的理解 这个

 master
    .SelectMany(m => 
        m.Laws.Select(l => (Master : m, Law : l))
    .GroupBy(tuple => new { LawNo: tuple.Law.LawNo, DockNo: tuple.Master.DocNo})

结果应该是大师组。