简体   繁体   中英

Count items in a nested list

I have an class called Comment that has a property which is a list of Comments. So a comment can have multiple replies. Eg:

        comments = new List<Comment>
        {
            new Comment
            {
                CommentText = "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.",
                ParentBlogId = blogId,
                PublishedDate = DateTime.Now,
                User = new User{UserName = "arnvanhoutte"},
                Replies = new List<Comment>
                {
                    new Comment
                    {
                        CommentText = "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.",
                        ParentBlogId = blogId,
                        PublishedDate = DateTime.Now,
                        User = new User{UserName = "arnvanhoutte"},
                        Replies = new List<Comment>
                        {
                            new Comment
                            {
                                CommentText = "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.",
                                ParentBlogId = blogId,
                                PublishedDate = DateTime.Now,
                                User = new User{UserName = "arnvanhoutte"}
                            }
                        }
                    },
                    new Comment
                    {
                        CommentText = "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.",
                        ParentBlogId = blogId,
                        PublishedDate = DateTime.Now,
                        User = new User{UserName = "arnvanhoutte"}
                    }
                }
            },
            new Comment
            {
                CommentText = "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.",
                ParentBlogId = blogId,
                PublishedDate = DateTime.Now,
                User = new User{UserName = "arnvanhoutte"}
            },
            new Comment
            {
                CommentText = "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.",
                ParentBlogId = blogId,
                PublishedDate = DateTime.Now,
                User = new User{UserName = "arnvanhoutte"}
            }
        };

Now I would like to know how many comments in total there are in this list. So if I do comments.Count() I would only get 3. However there actually 6 comments in that list. How would I get to count these?

Here's a recursive function that counts all comments:

public int RecursiveCount(List<Comment> commentList)
{
    int partialCount = commentList.Count();

    foreach (Comment c in commentList)
        if(c.Replies != null)
            partialCount += RecursiveCount(c.Replies);

    return partialCount;
 }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM