使用LINQ计算嵌套的导航表行

时间:2016-08-03 06:18:48

标签: c# entity-framework linq count sum

我是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)
    })
});

1 个答案:

答案 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()
    })
});