Esempio n. 1
0
        static void Main(string[] args)
        {
            XDocument xdoc1 = new XDocument();

            XElement product1         = new XElement("Product");
            XElement product1Name     = new XElement("NameOfProduct", "Potato");
            XElement product1Calories = new XElement("Calories", "74");

            product1.Add(product1Name);
            product1.Add(product1Calories);

            XElement product2         = new XElement("Product");
            XElement product2Name     = new XElement("NameOfProduct", "Tomato");
            XElement product2Calories = new XElement("Calories", "20");

            product2.Add(product2Name);
            product2.Add(product2Calories);

            XElement product3         = new XElement("Product");
            XElement product3Name     = new XElement("NameOfProduct", "Carrot");
            XElement product3Calories = new XElement("Calories", "34");

            product3.Add(product3Name);
            product3.Add(product3Calories);

            XElement product4         = new XElement("Product");
            XElement product4Name     = new XElement("NameOfProduct", "Beef");
            XElement product4Calories = new XElement("Calories", "250");

            product4.Add(product4Name);
            product4.Add(product4Calories);

            XElement   product5         = new XElement("Product");
            XAttribute product5Attr     = new XAttribute("TypeProduct", "Eggs");
            XElement   product5Name     = new XElement("NameOfProduct", "Eggs");
            XElement   product5Calories = new XElement("Calories", "150");

            product5.Add(product5Attr);
            product5.Add(product5Name);
            product5.Add(product5Calories);

            XElement product6         = new XElement("Product");
            XElement product6Name     = new XElement("NameOfProduct", "Apple");
            XElement product6Calories = new XElement("Calories", "47");

            product6.Add(product6Name);
            product6.Add(product6Calories);

            XElement product7         = new XElement("Product");
            XElement product7Name     = new XElement("NameOfProduct", "Oats");
            XElement product7Calories = new XElement("Calories", "357");

            product7.Add(product7Name);
            product7.Add(product7Calories);

            XElement foodstuff = new XElement("Foodstuff");

            foodstuff.Add(product1);
            foodstuff.Add(product2);
            foodstuff.Add(product3);
            foodstuff.Add(product4);
            foodstuff.Add(product5);
            foodstuff.Add(product6);
            foodstuff.Add(product7);


            xdoc1.Add(foodstuff);
            xdoc1.Save("Foodstuff.xml");

            XDocument xdoc2 = new XDocument();

            XElement   dish1     = new XElement("Dish");
            XElement   dish1Name = new XElement("Name", "Mash Potatoes");
            XElement   dish1QuantityProducts1 = new XElement("QuantityOfGramProduct1", "400");
            XAttribute dish1Product1          = new XAttribute("Product", "Potato");
            XElement   dish1QuantityProducts2 = new XElement("QuantityOfGramProduct2", "100");
            XAttribute dish1Product2          = new XAttribute("Product", "Tomato");
            XElement   dish1QuantityProducts3 = new XElement("QuantityOfGramProduct3", "100");
            XAttribute dish1Product3          = new XAttribute("Product", "Egg");

            dish1QuantityProducts1.Add(dish1Product1);
            dish1QuantityProducts2.Add(dish1Product2);
            dish1QuantityProducts3.Add(dish1Product3);
            dish1.Add(dish1Name);
            dish1.Add(dish1QuantityProducts1);
            dish1.Add(dish1QuantityProducts2);
            dish1.Add(dish1QuantityProducts3);

            XElement   dish2     = new XElement("Dish");
            XElement   dish2Name = new XElement("Name", "Salad");
            XElement   dish2QuantityProducts1 = new XElement("QuantityOfGramProduct1", "200");
            XAttribute dish2Product1          = new XAttribute("Product", "Tomato");
            XElement   dish2QuantityProducts2 = new XElement("QuantityOfGramProduct2", "300");
            XAttribute dish2Product2          = new XAttribute("Product", "Carrot");
            XElement   dish2QuantityProducts3 = new XElement("QuantityOfGramProduct3", "100");
            XAttribute dish2Product3          = new XAttribute("Product", "Apple");

            dish2QuantityProducts1.Add(dish2Product1);
            dish2QuantityProducts2.Add(dish2Product2);
            dish2QuantityProducts3.Add(dish2Product3);
            dish2.Add(dish2Name);
            dish2.Add(dish2QuantityProducts1);
            dish2.Add(dish2QuantityProducts2);
            dish2.Add(dish2QuantityProducts3);

            XElement   dish3     = new XElement("Dish");
            XElement   dish3Name = new XElement("Name", "Beef Staek");
            XElement   dish3QuantityProducts1 = new XElement("QuantityOfGramProduct1", "200");
            XAttribute dish3Product1          = new XAttribute("Product", "Beef");
            XElement   dish3QuantityProducts2 = new XElement("QuantityOfGramProduct2", "200");
            XAttribute dish3Product2          = new XAttribute("Product", "Tomato");
            XElement   dish3QuantityProducts3 = new XElement("QuantityOfGramProduct3", "100");
            XAttribute dish3Product3          = new XAttribute("Product", "Carrot");

            dish3QuantityProducts1.Add(dish3Product1);
            dish3QuantityProducts2.Add(dish3Product2);
            dish3QuantityProducts3.Add(dish3Product3);
            dish3.Add(dish3Name);
            dish3.Add(dish3QuantityProducts1);
            dish3.Add(dish3QuantityProducts2);
            dish3.Add(dish3QuantityProducts3);

            XElement   dish4     = new XElement("Dish");
            XElement   dish4Name = new XElement("Name", "Morning Oats");
            XElement   dish4QuantityProducts1 = new XElement("QuantityOfGramProduct1", "200");
            XAttribute dish4Product1          = new XAttribute("Product", "Oats");
            XElement   dish4QuantityProducts2 = new XElement("QuantityOfGramProduct2", "100");
            XAttribute dish4Product2          = new XAttribute("Product", "Egg");
            XElement   dish4QuantityProducts3 = new XElement("QuantityOfGramProduct3", "200");
            XAttribute dish4Product3          = new XAttribute("Product", "Apple");

            dish4QuantityProducts1.Add(dish4Product1);
            dish4QuantityProducts2.Add(dish4Product2);
            dish4QuantityProducts3.Add(dish4Product3);
            dish4.Add(dish4Name);
            dish4.Add(dish4QuantityProducts1);
            dish4.Add(dish4QuantityProducts2);
            dish4.Add(dish4QuantityProducts3);

            XElement dishes = new XElement("Dishes");

            dishes.Add(dish1);
            dishes.Add(dish2);
            dishes.Add(dish3);
            dishes.Add(dish4);

            xdoc2.Add(dishes);
            xdoc2.Save("Dishes.xml");

            XDocument xdoc3 = new XDocument();

            XElement menu1      = new XElement("Menu");
            XElement menu1Date  = new XElement("Date", "25.06.18 12:00");
            XElement menu1Dish  = new XElement("Dish", "Beef Steak");
            XElement menu1Price = new XElement("Price", "400");

            menu1.Add(menu1Date);
            menu1.Add(menu1Dish);
            menu1.Add(menu1Price);

            XElement menu2      = new XElement("Menu");
            XElement menu2Date  = new XElement("Date", "13.11.18 9:00");
            XElement menu2Dish  = new XElement("Dish", "Morning Oats");
            XElement menu2Price = new XElement("Price", "247");

            menu2.Add(menu2Date);
            menu2.Add(menu2Dish);
            menu2.Add(menu2Price);

            XElement menu3      = new XElement("Menu");
            XElement menu3Date  = new XElement("Date", "16.03.18 12:54");
            XElement menu3Dish  = new XElement("Dish", "Mash Potatoes");
            XElement menu3Price = new XElement("Price", "150");

            menu3.Add(menu3Date);
            menu3.Add(menu3Dish);
            menu3.Add(menu3Price);

            XElement menu4      = new XElement("Menu");
            XElement menu4Date  = new XElement("Date", "20.06.18 13:00");
            XElement menu4Dish  = new XElement("Dish", "Salad");
            XElement menu4Price = new XElement("Price", "86");

            menu4.Add(menu4Date);
            menu4.Add(menu4Dish);
            menu4.Add(menu4Price);

            XElement fullMenu = new XElement("FullMenu");

            fullMenu.Add(menu1);
            fullMenu.Add(menu2);
            fullMenu.Add(menu3);
            fullMenu.Add(menu4);

            xdoc3.Add(fullMenu);
            xdoc3.Save("Menu.xml");

            Console.WriteLine(xdoc1);
            Console.WriteLine(xdoc2);
            Console.WriteLine(xdoc3);

            XDocument products = XDocument.Load("Foodstuff.xml");

            Console.WriteLine("1) Список всех продуктов:");
            Console.WriteLine();
            foreach (XElement xElement in products.Element("Foodstuff").Elements("Product"))
            {
                XElement nameOfProduct = xElement.Element("NameOfProduct");
                XElement Calories      = xElement.Element("Calories");
                if (nameOfProduct != null && Calories != null)
                {
                    Console.WriteLine($"Name of product: {nameOfProduct.Value}");
                    Console.WriteLine($"Calories of product: {Calories.Value}");
                }
                Console.WriteLine();
            }

            XDocument Dishes = XDocument.Load("Dishes.xml");

            Console.WriteLine("2) Список всех блюд:");
            Console.WriteLine();
            foreach (XElement xElement in Dishes.Element("Dishes").Elements("Dish"))
            {
                XElement   Name             = xElement.Element("Name");
                XElement   QuantityProduct1 = xElement.Element("QuantityOfGramProduct1");
                XAttribute Product1         = xElement.Element("QuantityOfGramProduct1").Attribute("Product");
                XElement   QuantityProduct2 = xElement.Element("QuantityOfGramProduct2");
                XAttribute Product2         = xElement.Element("QuantityOfGramProduct2").Attribute("Product");
                XElement   QuantityProduct3 = xElement.Element("QuantityOfGramProduct3");
                XAttribute Product3         = xElement.Element("QuantityOfGramProduct3").Attribute("Product");


                if (Name != null && QuantityProduct1 != null && Product1 != null && QuantityProduct2 != null && Product2 != null && QuantityProduct3 != null && Product3 != null)
                {
                    Console.WriteLine($"Название блюда: {Name.Value}");
                    Console.WriteLine($"Местит: {Product1.Value} {QuantityProduct1.Value} грамм, {Product2.Value} {QuantityProduct2.Value} грамм, {Product3.Value} {QuantityProduct3.Value} грамм.");
                }
                Console.WriteLine();
            }

            XDocument Menu = XDocument.Load("Menu.xml");

            Console.WriteLine("3) Список всех меню:");
            Console.WriteLine();
            foreach (XElement xElement in Menu.Element("FullMenu").Elements("Menu"))
            {
                XElement Date  = xElement.Element("Date");
                XElement Dish  = xElement.Element("Dish");
                XElement Price = xElement.Element("Price");

                if (Date != null && Dish != null && Price != null)
                {
                    Console.WriteLine($"{Dish.Value} приготовлен {Date.Value}");
                    Console.WriteLine($"Цена: {Price.Value}");
                }
                Console.WriteLine();
            }

            Console.WriteLine("4)Список продуктов, калорийность которых больше 150:");
            Console.WriteLine();
            var result1 = from item in products.Element("Foodstuff").Elements("Product")
                          where Convert.ToInt32(item.Element("Calories").Value) > 150
                          select item;

            foreach (XElement xElement in result1)
            {
                XElement nameOfProduct = xElement.Element("NameOfProduct");
                XElement Calories      = xElement.Element("Calories");
                if (nameOfProduct != null && Calories != null)
                {
                    Console.WriteLine($"Name of product: {nameOfProduct.Value}");
                    Console.WriteLine($"Calories of product: {Calories.Value}");
                }
                Console.WriteLine();
            }

            Console.WriteLine("5)Список блюд, которые имеют вес продукта в составе больше 200 грамм:");
            Console.WriteLine();
            var result2 = Dishes.Element("Dishes").Elements("Dish").Where(item => (Convert.ToInt32(item.Element("QuantityOfGramProduct1").Value) > 200 ||
                                                                                   Convert.ToInt32(item.Element("QuantityOfGramProduct2").Value) > 200 ||
                                                                                   Convert.ToInt32(item.Element("QuantityOfGramProduct3").Value) > 200));

            foreach (XElement xElement in result2)
            {
                XElement   Name             = xElement.Element("Name");
                XElement   QuantityProduct1 = xElement.Element("QuantityOfGramProduct1");
                XAttribute Product1         = xElement.Element("QuantityOfGramProduct1").Attribute("Product");
                XElement   QuantityProduct2 = xElement.Element("QuantityOfGramProduct2");
                XAttribute Product2         = xElement.Element("QuantityOfGramProduct2").Attribute("Product");
                XElement   QuantityProduct3 = xElement.Element("QuantityOfGramProduct3");
                XAttribute Product3         = xElement.Element("QuantityOfGramProduct3").Attribute("Product");


                if (Name != null && QuantityProduct1 != null && Product1 != null && QuantityProduct2 != null && Product2 != null && QuantityProduct3 != null && Product3 != null)
                {
                    Console.WriteLine($"Название блюда: {Name.Value}");
                    Console.WriteLine($"Местит: {Product1.Value} {QuantityProduct1.Value} грамм, {Product2.Value} {QuantityProduct2.Value} грамм, {Product3.Value} {QuantityProduct3.Value} грамм.");
                }
                Console.WriteLine();
            }

            Console.WriteLine("6)Список список продуктов отсортированых за алфавитом:");
            Console.WriteLine();
            var result3 = products.Element("Foodstuff").Elements("Product").OrderBy(item => item.Element("NameOfProduct").Value);

            foreach (XElement xElement in result3)
            {
                XElement nameOfProduct = xElement.Element("NameOfProduct");
                XElement Calories      = xElement.Element("Calories");
                if (nameOfProduct != null && Calories != null)
                {
                    Console.WriteLine($"Name of product: {nameOfProduct.Value}");
                    Console.WriteLine($"Calories of product: {Calories.Value}");
                }
                Console.WriteLine();
            }

            Console.WriteLine("7)Список блюд в меню, отсортированных по цене по убыванию:");
            Console.WriteLine();
            var result4 = Menu.Element("FullMenu").Elements("Menu").OrderByDescending(item => Convert.ToInt32(item.Element("Price").Value));

            foreach (XElement xElement in result4)
            {
                XElement Date  = xElement.Element("Date");
                XElement Dish  = xElement.Element("Dish");
                XElement Price = xElement.Element("Price");

                if (Date != null && Dish != null && Price != null)
                {
                    Console.WriteLine($"{Dish.Value} приготовлен {Date.Value}");
                    Console.WriteLine($"Цена: {Price.Value}");
                }
                Console.WriteLine();
            }

            Console.WriteLine("8)Список блюд, в которых есть томат:");
            Console.WriteLine();
            var result5 = Dishes.Element("Dishes").Elements("Dish").Where(item => (item.Element("QuantityOfGramProduct1").Attribute("Product").Value == "Tomato" ||
                                                                                   item.Element("QuantityOfGramProduct2").Attribute("Product").Value == "Tomato" ||
                                                                                   item.Element("QuantityOfGramProduct3").Attribute("Product").Value == "Tomato"));

            foreach (XElement xElement in result5)
            {
                XElement   Name             = xElement.Element("Name");
                XElement   QuantityProduct1 = xElement.Element("QuantityOfGramProduct1");
                XAttribute Product1         = xElement.Element("QuantityOfGramProduct1").Attribute("Product");
                XElement   QuantityProduct2 = xElement.Element("QuantityOfGramProduct2");
                XAttribute Product2         = xElement.Element("QuantityOfGramProduct2").Attribute("Product");
                XElement   QuantityProduct3 = xElement.Element("QuantityOfGramProduct3");
                XAttribute Product3         = xElement.Element("QuantityOfGramProduct3").Attribute("Product");


                if (Name != null && QuantityProduct1 != null && Product1 != null && QuantityProduct2 != null && Product2 != null && QuantityProduct3 != null && Product3 != null)
                {
                    Console.WriteLine($"Название блюда: {Name.Value}");
                    Console.WriteLine($"Местит: {Product1.Value} {QuantityProduct1.Value} грамм, {Product2.Value} {QuantityProduct2.Value} грамм, {Product3.Value} {QuantityProduct3.Value} грамм.");
                }
                Console.WriteLine();
            }

            Console.WriteLine("9)Сумма за все блюда в меню:");
            Console.WriteLine();
            var result6 = Menu.Element("FullMenu").Elements("Menu").Sum(item => Convert.ToInt32(item.Element("Price").Value));

            Console.WriteLine(result6 + " грн.");
            Console.WriteLine();

            Console.WriteLine("10)Максимальный и минимальный вес блюда в меню:");
            Console.WriteLine();
            var result7 = Dishes.Element("Dishes").Elements("Dish").Max(item => Convert.ToInt32(item.Element("QuantityOfGramProduct1").Value) +
                                                                        Convert.ToInt32(item.Element("QuantityOfGramProduct2").Value) +
                                                                        Convert.ToInt32(item.Element("QuantityOfGramProduct3").Value));
            var result8 = Dishes.Element("Dishes").Elements("Dish").Min(item => Convert.ToInt32(item.Element("QuantityOfGramProduct1").Value) +
                                                                        Convert.ToInt32(item.Element("QuantityOfGramProduct2").Value) +
                                                                        Convert.ToInt32(item.Element("QuantityOfGramProduct3").Value));

            Console.WriteLine("Максимальный вес блюда:" + result7 + " грамм");
            Console.WriteLine("Минимальный вес блюда: " + result8 + " грамм");
            Console.WriteLine();


            var result10 = from Mn in Menu.Element("FullMenu").Elements("Menu")
                           join Ds in Dishes.Element("Dishes").Elements("Dish") on Mn.Element("Dish").Value equals Ds.Element("Name").Value
                           select new
            {
                NameOfDish   = Mn.Element("Dish").Value,
                PriceOfDish  = Mn.Element("Price").Value,
                NameProduct1 = Ds.Element("QuantityOfGramProduct1").Attribute("Product").Value,
                NameProduct2 = Ds.Element("QuantityOfGramProduct2").Attribute("Product").Value,
                NameProduct3 = Ds.Element("QuantityOfGramProduct3").Attribute("Product").Value
            };

            foreach (var item in result10)
            {
                Console.WriteLine(item.NameOfDish + " По цене " + item.PriceOfDish + " грн." + " состоит из " + item.NameProduct1 + ", " + item.NameProduct2 + ", " + item.NameProduct3);
            }
        }