Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Xml.Linq;
- using System.Linq;
- namespace zadatak2
- {
- class Program
- {
- static void Main(string[] args)
- {
- foreach(var temp in CombinedDataBase.SpisakVozilaVozaca())
- {
- Console.WriteLine(temp.Item1.Name);
- foreach(var temp2 in temp.Item2)
- Console.WriteLine($"{temp2.Age} {temp2.Manufacturer}");
- }
- Console.WriteLine();
- foreach (var temp in CombinedDataBase.SpisakImenaVozacaVozila())
- {
- Console.Write(temp.Item1);
- Console.WriteLine($" {temp.Item2.Age} {temp.Item2.Manufacturer}");
- }
- Console.WriteLine();
- foreach (var temp in CombinedDataBase.SpisakNeiskusnihVozaca())
- {
- Console.Write($"{temp.Id} {temp.Name} {temp.YearsDriving}");
- }
- Console.WriteLine();
- }
- public class Driver
- {
- public int Id { get; set; }
- public string Name { get; set; }
- public int YearsDriving { get; set; }
- }
- public class Car
- {
- public int DriverId { get; set; }
- public string Manufacturer { get; set; }
- public int Age { get; set; }
- }
- public class DriverDataBase
- {
- public List<Driver> Drivers { get; set; }
- }
- public interface IDDBUpgrade
- {
- List<Driver> GetExperiencedDrivers();
- }
- public class UpgradedDDB : DriverDataBase, IDDBUpgrade
- {
- public List<Driver> GetExperiencedDrivers()
- {
- return Drivers.Where(driver => driver.YearsDriving > 10).ToList();
- }
- }
- public class CarDataBase
- {
- public List<Car> Cars { get; set; }
- }
- public interface ICDBUpgrade
- {
- List<Car> GetOldtimers();
- }
- public class UpgradedCDB : CarDataBase, ICDBUpgrade
- {
- public List<Car> GetOldtimers()
- {
- var cars = Cars.Select(car => car);
- return (from car in cars
- let manufact = car.Manufacturer == "Jaguar" ||
- car.Manufacturer == "Rolls-Royce" || car.Manufacturer == "Aston Martin"
- where car.Age > 30 && manufact
- select car).ToList();
- }
- }
- public static class CombinedDataBase
- {
- public static UpgradedDDB DDB;
- public static UpgradedCDB CDB;
- static CombinedDataBase()
- {
- DDB = new UpgradedDDB();
- CDB = new UpgradedCDB();
- XElement xdom = XElement.Load("../../database.xml");
- CDB.Cars = (from car in xdom.Descendants("Car")
- select new Car()
- {
- DriverId = (int)car.FirstAttribute,
- Age = (int)car.LastAttribute,
- Manufacturer = car.Value
- }).ToList();
- DDB.Drivers = (from driver in xdom.Descendants("Driver")
- select new Driver()
- {
- Id = (int)driver.FirstAttribute,
- YearsDriving = (int)driver.LastAttribute,
- Name = driver.Value
- }).ToList();
- }
- //Izvestaji
- public static List<Tuple<Driver, List<Car>>> SpisakVozilaVozaca()
- {
- var report = new List<Tuple<Driver, List<Car>>>();
- foreach (Driver d in DDB.Drivers)
- {
- var cars = CDB.Cars.Where(car => car.DriverId == d.Id).ToList();
- report.Add(Tuple.Create(d, cars));
- }
- return report;
- }
- public static List<Tuple<string, Car>> SpisakImenaVozacaVozila()
- {
- var report = new List<Tuple<string, Car>>();
- foreach (Car c in CDB.Cars)
- {
- var drivers = DDB.Drivers.Select(driver => driver);
- string name = (from d in drivers
- where d.Id == c.DriverId
- select d.Name).ToList()[0];
- report.Add(Tuple.Create(name, c));
- }
- return report;
- }
- public static List<Driver> SpisakNeiskusnihVozaca()
- {
- var report = new List<Driver>();
- var drivers = DDB.Drivers.Except(DDB.GetExperiencedDrivers()).Select(driver => driver);
- var cars = CDB.GetOldtimers().Select(car => car);
- return (from d in drivers
- join c in cars on d.Id equals c.DriverId
- into carsOfDrivers
- where d.Name.StartsWith("P") && carsOfDrivers.Count() >= 2
- select d).ToList();
- }
- }
- }
- }
Add Comment
Please, Sign In to add comment