//08. Export Users and Products /* public static string GetUsersWithProducts(ProductShopContext context) * { * //1:51:14 * var usersAndProducts = context.Users * .ToArray() * .Where(p => p.ProductsSold.Any()) * .Select(u => new ExportUserDto * { * FirstName = u.FirstName, * LastName = u.LastName, * Age = u.Age, * SoldProduct = new ExportProductCountDto * { * Count = u.ProductsSold.Count, * Products = u.ProductsSold.Select(p => new ExportProducDto * { * Name = p.Name, * Price = p.Price * }) * .OrderByDescending(p=>p.Price) * .ToArray() * } * }) * .OrderByDescending(x=>x.SoldProduct.Count) * .Take(10) * .ToArray(); * * * var resultDto = new ExportUsersCountDto * { * Count = context.Users.Count(p=>p.ProductsSold.Any()), * Users = usersAndProducts * }; * * var result = XmlConverter.Serialize(resultDto, "Users"); * * return result; * } */ public static string GetUsersWithProducts(ProductShopContext context) { var stringBuilder = new StringBuilder(); var users = context .Users .AsEnumerable() .Where(u => u.ProductsSold.Any()) .OrderByDescending(u => u.ProductsSold.Count) .Select(u => new ExportUserDto { FirstName = u.FirstName, LastName = u.LastName, Age = u.Age, SoldProducts = new ExportSoldProductDto { Count = u.ProductsSold.Count, Products = u.ProductsSold .Select(p => new UserSoldProductDto { Name = p.Name, Price = p.Price }) .OrderByDescending(p => p.Price) .ToArray() } }) .Take(10) .ToArray(); var resultUsers = new ExportUserAndProductDto { Count = context.Users.Count(p => p.ProductsSold.Any()), Users = users }; var xmlSerializer = new XmlSerializer(typeof(ExportUserAndProductDto), new XmlRootAttribute("Users")); var namespaces = new XmlSerializerNamespaces(); namespaces.Add(string.Empty, string.Empty); xmlSerializer.Serialize(new StringWriter(stringBuilder), resultUsers, namespaces); return(stringBuilder.ToString().TrimEnd()); }
//Problem 8 public static string GetUsersWithProducts(ProductShopContext context) { StringBuilder sb = new StringBuilder(); var usersProducts = context.Users .Where(a => a.ProductsSold.Any()) .OrderByDescending(x => x.ProductsSold.Count()) .Select(x => new UserProductDto { FirstName = x.FirstName, LastName = x.LastName, Age = x.Age, SoldProduct = new ArrayWithCountDto { Count = x.ProductsSold.Count, SoldProduct = x.ProductsSold.Select(a => new UserProductArrayDto { Name = a.Name, Price = a.Price }) .OrderByDescending(p => p.Price) .ToArray() } }) .Take(10) .ToArray(); var userAndProductCountDto = new ExportUserAndProductDto() { Count = context.Users.Count(x => x.ProductsSold.Any()), Users = usersProducts }; var xmlSerializer = new XmlSerializer(typeof(ExportUserAndProductDto), new XmlRootAttribute("Users")); var namespaces = new XmlSerializerNamespaces(); namespaces.Add(string.Empty, string.Empty); xmlSerializer.Serialize(new StringWriter(sb), userAndProductCountDto, namespaces); return(sb.ToString().TrimEnd()); }