Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static string GetUsersWithProducts(ProductShopContext context)
- {
- var users = context.Users
- .Where(u => u.ProductsSold.Any() && u.ProductsSold.Any(p => p.BuyerId != null))
- .ToArray()
- .Select(u => new UserExportModel
- {
- FirstName = u.FirstName,
- LastName = u.LastName,
- Age = u.Age,
- SoldProducts = new SoldProductContainer
- {
- Count = u.ProductsSold.Count,
- Products = u.ProductsSold.Select(p => new SoldProductOutputModel
- {
- Name = p.Name,
- Price = p.Price
- }).OrderByDescending(p => p.Price).ToArray()
- }
- })
- .OrderByDescending(u => u.SoldProducts.Count)
- .Take(10).ToArray();
- var finalModel = new UserProductsFinalModel
- {
- Count = users.Length,
- Users = users
- };
- var xmlSerializer = new XmlSerializer(typeof(UserProductsFinalModel), new XmlRootAttribute("Users"));
- var namespaces = new XmlSerializerNamespaces();
- namespaces.Add("", "");
- var textWriter = new StringWriter();
- xmlSerializer.Serialize(textWriter, finalModel, namespaces);
- return textWriter.ToString();
- }
- [XmlType("User")]
- public class UserExportModel
- {
- [XmlElement("firstName")]
- public string FirstName { get; set; }
- [XmlElement("lastName")]
- public string LastName { get; set; }
- [XmlElement("age")]
- public int? Age { get; set; }
- [XmlElement("SoldProducts")]
- public SoldProductRoot SoldProducts { get; set; }
- }
- [XmlType("SoldProducts")]
- public class SoldProductContainer
- {
- [XmlElement("count")]
- public int Count { get; set; }
- [XmlArray("products")]
- public SoldProductOutputModel[] Products { get; set; }
- }
- [XmlType("Product")]
- public class SoldProductOutputModel
- {
- [XmlElement("name")]
- public string Name { get; set; }
- [XmlElement("price")]
- public decimal Price { get; set; }
- }
- [XmlRoot("Users")]
- public class UserProductsFinalModel
- {
- [XmlElement("count")]
- public int Count { get; set; }
- [XmlArray("users")]
- public UserExportModel[] Users { get; set; }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement