Beispiel #1
0
        //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());
        }
Beispiel #2
0
        //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());
        }