LINQ非平凡分组
我有以下几个类(请省略语法错误)LINQ非平凡分组,linq,linq-to-entities,group-by,linq-group,Linq,Linq To Entities,Group By,Linq Group,我有以下几个类(请省略语法错误) 类消息{ 公众人物接受者 ... } 班主任{ 公共列表组 ... } 班级{ 公共组类型 ... } 我想按组类型生成邮件计数。 例如: 向“X组”(T1型)“Y组”(T2型)中的“人员A”发送消息“你好” 消息“blah”,发送给“Z组”中的“人员B”(类型T1) 我需要的查询将输出: 组类型:T1,消息计数:2 组类型:T2,消息计数:1 如何在Linq To Entities中实现这一点? 考虑到一个人可能是零组 我知道如何在内存中实现这一点,但我想使
类消息{
公众人物接受者
...
}
班主任{
公共列表组
...
}
班级{
公共组类型
...
}
我想按组类型生成邮件计数。
例如:
组类型:T2,消息计数:1 如何在Linq To Entities中实现这一点?
考虑到一个人可能是零组 我知道如何在内存中实现这一点,但我想使用Linq来创建实体:
Dictionary<GroupTypesEnum, int> count = new ...
foreach (Message msg in db.Messages) {
foreach (Group group in msg.Recipient.Groups) {
count[group.GroupType]++;
}
}
字典计数=新建。。。
foreach(db.Messages中的消息msg){
foreach(msg.Recipient.Groups中的组){
计数[组.组类型]++;
}
}
这对于SelectMany
var result = messages
.SelectMany(m => m.Recipient.Groups)
.GroupBy(t => t.GroupType)
.Select(g => new { gType = g.Key, count = g.Count()});
然后在LinqPad中找到result.Dump()
我的测试代码的完整来源如下:这对于
SelectMany
var result = messages
.SelectMany(m => m.Recipient.Groups)
.GroupBy(t => t.GroupType)
.Select(g => new { gType = g.Key, count = g.Count()});
然后在LinqPad中找到result.Dump()
我的测试代码的完整源代码如下: