[英]In linq to sql can I have a select (and groupby) within a groupby?
我有以下课程:
class XXX
{
int XXXType{get;set;}
List<YYY> Children{get;set;}
}
class YYY
{
int YYYType{get;set;}
}
我想为属性XXXType查找具有相同值的项目数,对于这些组中的每一个,我想为属性YYYType查找其子项具有相同值的项目数。 linq to sql是否在选择/组中支持选择/组? 我没有任何编译/运行时异常,但YYYChildren的长度始终为零。
(from x in XXX).GroupBy(x=>x.XXXType, (key, values) => new {
XXXType = key,
Count = values.Count(),
YYYChildren = (from y in values.SelectMany(z=>z.Children).GroupBy(y=>y.YYYType, (key, values) =>
new {
YYYType = key,
Count = values.Count()
}
});
像这样
//样本数据
var xxxList = new List<XXX> {
new XXX()
{
XXXType = 1,
Children = new List<YYY>() {
new YYY() {YYYType = 1},
new YYY() {YYYType = 1},
new YYY() {YYYType = 2},
new YYY() {YYYType = 2}
}
}
};
//查询:
foreach(var x in xxxList.GroupBy(info => info.XXXType)
.Select(group => new {
key = group.Key,
Count = group.Count(),
YYYChildren = (from y in xxxList.SelectMany(z=>z.Children).GroupBy(y=>y.YYYType, (key, values) =>
new {
YYYType = key,
Count = values.Count()
}) select y.YYYType)
}))
{
Console.WriteLine("XXXType :{0}, Number Of XXXTypes :{1}, Number Of YYYChildren :{2}", x.key, x.Count, x.YYYChildren.Count());
}
结果:XXXType:1,XXXType数量:1,YYY儿童数量:2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.