Ejemplo n.º 1
0
        public static string ExportCommentsOnPosts(InstagraphContext context)
        {
            var users = context.Users.Include(e => e.Posts).ThenInclude(e => e.Comments).ToArray();

            var validUsers = new List <CommentsOnPostDto>();

            foreach (var user in users)
            {
                int mostCommentsCount = user.Posts.Select(e => e.Comments.Count).ToArray().OrderByDescending(e => e).FirstOrDefault();

                var validUser = new CommentsOnPostDto()
                {
                    Username     = user.Username,
                    MostComments = mostCommentsCount
                };
                validUsers.Add(validUser);
            }
            var result = validUsers.OrderByDescending(e => e.MostComments).ThenBy(e => e.Username);

            var xmlDoc = new XDocument(new XElement("users"));

            foreach (var user in result)
            {
                xmlDoc.Root.Add(new XElement("user", new XElement("Username", user.Username), new XElement("MostComments", user.MostComments)));
            }
            return(xmlDoc.ToString());
        }
Ejemplo n.º 2
0
        public static string ExportCommentsOnPosts(InstagraphContext context)
        {
            var users = context.Users
                        .Include(u => u.Posts)
                        .ThenInclude(p => p.Comments)
                        .Select(u => new
            {
                Username     = u.Username,
                MostComments = u.Posts
                               .Select(p => p.Comments.Count)
                               .ToArray()
            })
                        .ToArray();

            var commentsOnPosts = new List <CommentsOnPostDto>();

            foreach (var u in users)
            {
                var username     = u.Username;
                var countOfPosts = 0;

                if (u.MostComments.Any()) // if there has any Comments
                {
                    countOfPosts = u.MostComments.OrderByDescending(c => c).FirstOrDefault();
                }

                var dto = new CommentsOnPostDto()
                {
                    Username     = username,
                    MostComments = countOfPosts
                };

                commentsOnPosts.Add(dto);
            }
            var orderedCommentsOnPosts = commentsOnPosts
                                         .OrderByDescending(cp => cp.MostComments)
                                         .ThenBy(cp => cp.Username);


            var xmlDoc = new XDocument(new XElement("user"));

            foreach (var cOnPost in orderedCommentsOnPosts)
            {
                xmlDoc.Root.Add(new XElement("user",
                                             new XElement("Username", cOnPost.Username),
                                             new XElement("MostComments", cOnPost.MostComments)));

                //// or
                //var user = new XElement("user");
                //user.Add(new XElement("Username", cOnPost.Username));
                //user.Add(new XElement("MostComments", cOnPost.MostComments));
                //xmlDoc.Root.Add(user);
            }

            string xmlString = xmlDoc.ToString();

            return(xmlString);
        }