我是c#和LINQ的新手,现在我需要在一个接一个嵌套的导航表上做一些聚合,结果生成如下:
[{
"ForumMain":"General Forum",
"Forums": [{
"Title":"My First Forum",
"TopicCount":4,
"PostCount":[2,0,1,0]
},
{
"Title":"My Second Forum",
"TopicCount":0,
"PostCount":[]
}]
}]
我希望PostCount
也是总和,但是当我尝试求和PostCount
时它会给出调试空错误,请参阅下面的linq查询:
var data = ForumCategories.Select(f => new
{
ForumMain = f.CategoryName,
Forums = f.Fora.Select(t => new
{
Title = t.ForumName,
TopicCount = t.Topics.Count,
PostCount = t.Topics
.Select(m => m.ForumPosts.Count == null ? 0 : m.ForumPosts.Count)
})
});
答案 0 :(得分:3)
根据我的理解,PostCount
下您想要的内容包含Forum
中所有主题的帖子总数。正确?
如果是这样的话:
var data = db.ForumCategories.Select(f => new
{
ForumMain = f.CategoryName,
Forums = f.Fora.Select(t => new
{
Title = t.ForumName,
TopicCount = t.Topics.Count,
PostCount = t.Topics.SelectMany(x => x.ForumPosts).Count()
})
});