private void Show(UserStruct user) { Console.Write("The latest post: "); if (user.LastPost != null) { Console.WriteLine($"\n{user.LastPost}"); } else { Console.WriteLine("None"); } Console.WriteLine($"The number of the latest post's comments: {user.LastPostCommentsCount}"); Console.Write("The most popular post by comments: "); if (user.MostPopularByComms != null) { Console.WriteLine($"\n{user.MostPopularByComms}"); } else { Console.WriteLine("None"); } Console.Write("The most popular post by likes: "); if (user.MostPopularByLikes != null) { Console.WriteLine($"\n{user.MostPopularByLikes}"); } else { Console.WriteLine("None"); } Console.WriteLine($"The number of uncompleted tasks: {user.UnCompletedTasksCount}"); }
//Query5:Получить следующую структуру (передать Id пользователя в параметры) // User // Последний пост пользователя(по дате) // Количество комментов под последним постом // Количество невыполненных тасков для пользователя // Самый популярный пост пользователя(там где больше всего комментов с длиной текста больше 80 символов) // Самый популярный пост пользователя(там где больше всего лайков) private UserStruct Query5(int userId) { UserStruct user = new UserStruct(); try { var data = getDataDelegate.Invoke(); SomeEntity usr = data.Where(u => u.Id == userId).FirstOrDefault(); List <FullPost> posts = usr.Posts.ToList(); if (posts != null && posts.Count() > 0) { FullPost lastPost = posts.OrderByDescending(p => p.CreatedAt).First(); if (lastPost != null) { user.LastPost = lastPost; if (lastPost.Comments != null) { user.LastPostCommentsCount = lastPost.Comments.Count(); } } List <FullPost> subresult = posts.OrderByDescending(p => p.Comments.Count()) .Where(c => c.Comments.Where(e => e.Body.Length > 80).Count() > 0) .ToList(); if (subresult != null && subresult.Count() > 0) { user.MostPopularByComms = subresult.GroupJoin(subresult.SelectMany(c => c.Comments), p => p.Id, c => c.PostId, (p, cl) => new { PostItem = p, CommsCounts = cl.Select(a => a.Body) .Where(b => b.Length > 80) .Count() } ).OrderBy(v => v.CommsCounts) .Last().PostItem; } user.MostPopularByLikes = posts.OrderByDescending(p => p.Likes).First(); } if (usr.Todos != null) { user.UnCompletedTasksCount = usr.Todos.Where(t => t.IsComplete == false).Count(); } } catch (Exception ex) { Console.Clear(); Console.WriteLine(ex.Message); Console.ReadKey(); } return(user); }