Linq 按元素和子元素分组
Linq group by element and a sub element
结构基本是这样的:
师傅:
Id
DocNo
Laws[]
规律如下:
LawNo
Id
我想按 DocNo 和 LawNo 分组。
预期的字典键是:
{DocNo, LawNo}
期望值为
Master
我试过了,但按键与预期的不一样
master.GroupBy(x => new {x.DocNo, _LawNo = x.Laws.Select(y => y.LawNo).Distinct()});
谢谢
如果我没理解错的话,你可以先用SelectMany
再用GroupBy
,SelectMany
让LawNo
变平为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})
结果应该是大师组。
结构基本是这样的:
师傅:
Id
DocNo
Laws[]
规律如下:
LawNo
Id
我想按 DocNo 和 LawNo 分组。
预期的字典键是:
{DocNo, LawNo}
期望值为
Master
我试过了,但按键与预期的不一样
master.GroupBy(x => new {x.DocNo, _LawNo = x.Laws.Select(y => y.LawNo).Distinct()});
谢谢
如果我没理解错的话,你可以先用SelectMany
再用GroupBy
,SelectMany
让LawNo
变平为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})
结果应该是大师组。