次のクラスがあります(構文エラーを省略してください)
class Message {
public Person Recipient
...
}
class Person {
public List<Group> Groups
...
}
class Group {
public GroupTypesEnum GroupType
...
}
グループの種類ごとにメッセージの数を生成したいと考えています。例:
- 「Xグループ」(タイプT1)、「Yグループ」(タイプT2)の「Aさん」に「こんにちは」とメッセージ
- 「グループZ」(タイプT1)に属する「人物B」へのメッセージ「何とか」
必要なクエリは次のように出力されます。
グループ タイプ: T1、メッセージ カウント: 2
グループ タイプ: T2、メッセージ カウント: 1
Linq To Entities
でこれを達成するにはどうすればよいですか?
人がゼログループに属する可能性があることを考慮して
これをメモリ内で実現する方法は知っていますが、Linq-To-Entities を使用したいと思います。
Dictionary<GroupTypesEnum, int> count = new ...
foreach (Message msg in db.Messages) {
foreach (Group group in msg.Recipient.Groups) {
count[group.GroupType]++;
}
}