sashomaga

Concate different lists of objects

Mar 4th, 2013
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.78 KB | None | 0 0
  1. static void Main()
  2.     {
  3.         try
  4.         {
  5.             List<Student> listStudents = new List<Student>();
  6.             listStudents.Add(new Student("Pesho", "Petrov", 3.00));
  7.             listStudents.Add(new Student("Misho", "Kirov", 4.40));
  8.             listStudents.Add(new Student("Gosho", "Goshev", 6.00));
  9.             listStudents.Add(new Student("Dido", "Mishov", 5.55));
  10.             listStudents.Add(new Student("Valeri", "Nakov", 5.45));
  11.             listStudents.Add(new Student("Petio", "Marinov", 2.00));
  12.             listStudents.Add(new Student("Batman", "Vasilev", 2.10));
  13.             listStudents.Add(new Student("Robin", "Kamenikov", 3.20));
  14.             listStudents.Add(new Student("Ninja", "Zagorkov", 4.44));
  15.             listStudents.Add(new Student("Penka", "Filipova", 2.01));
  16.  
  17.             List<Worker> listWorkers = new List<Worker>();
  18.             listWorkers.Add(new Worker("Gosho", "Zmeia", 200, 19));
  19.             listWorkers.Add(new Worker("Boiko", "Borisov", 100000, 1));
  20.             listWorkers.Add(new Worker("Ceko", "Popov", 100, 2));
  21.             listWorkers.Add(new Worker("Krisi", "Gosova", 500, 8));
  22.             listWorkers.Add(new Worker("Nina", "Koleva", 300, 9));
  23.             listWorkers.Add(new Worker("Kristina", "Babova", 5, 23));
  24.             listWorkers.Add(new Worker("Tom", "Tomov", 300, 5));
  25.             listWorkers.Add(new Worker("Misho", "Shamara", 400, 7));
  26.             listWorkers.Add(new Worker("Gosho", "Popov", 1000, 10));
  27.             listWorkers.Add(new Worker("Gelio", "Vylev", 250, 3));
  28.  
  29.             //sort students
  30.             //linq
  31.             var sortedStudents =
  32.             (from stud in listStudents
  33.              orderby stud.Grade
  34.              select stud).ToList();
  35.             //Lambda
  36.             var sortredStudents2 = listStudents.OrderBy(x => x.Grade).ToList();
  37.  
  38.             //sort workers
  39.             //linq
  40.             var sortedWorkers =
  41.             (from worker in listWorkers
  42.              orderby worker.MoneyPerHour() descending
  43.              select worker).ToList();
  44.             //lambda
  45.             var sortedWorkers2 = listWorkers.OrderByDescending(x => x.MoneyPerHour()).ToList();
  46.             //merge lists
  47.             List<dynamic> mergeList = new List<dynamic>(listStudents.Concat<dynamic>(listWorkers));
  48.  
  49.             //sort by first name than by last name
  50.             //linq
  51.             var mergeSorted =
  52.             (from man in mergeList
  53.              orderby man.FirstName, man.LastName
  54.              select man).ToList();
  55.             //lambda
  56.             var mergeSorted2 = mergeList.OrderBy(x => x.FirstName).ThenBy(x => x.LastName).ToList();
  57.         }
  58.         catch (ArgumentException err)
  59.         {
  60.             Console.WriteLine(err.Message);
  61.         }          
  62.     }
  63.  
  64. public abstract class Human
  65. {
  66.     private string firstName;
  67.     private string lastName;
  68.  
  69.     public string FirstName
  70.     {
  71.         get {return this.firstName;}
  72.     }
  73.  
  74.     public string LastName
  75.     {
  76.         get { return this.lastName; }
  77.     }
  78.  
  79.     public Human(string firstName, string lastName)
  80.     {
  81.         this.firstName = firstName;
  82.         this.lastName = lastName;
  83.     }
  84. }
  85.  
  86. public class Student : Human
  87. {
  88.     private double grade;
  89.  
  90.     public double Grade
  91.     {
  92.         get { return this.grade; }
  93.         private set
  94.         {
  95.             if (value < 2 || value > 6)
  96.             {
  97.                 throw new ArgumentException("Invalid grade");
  98.             }
  99.             this.grade = value;
  100.         }
  101.     }
  102.    
  103.  
  104.     public Student(string firstName, string lastName, double grade)
  105.         : base(firstName, lastName)
  106.     {
  107.         this.Grade = grade;
  108.     }
  109. }
  110.  
  111. public class Worker : Human
  112. {
  113.     private decimal weekSalary;
  114.  
  115.     private int workHoursPerDay;
  116.  
  117.     public decimal WeekSalary
  118.     {
  119.         get
  120.         {
  121.             return this.weekSalary;
  122.         }
  123.         private set
  124.         {
  125.             if (value <= 0)
  126.             {
  127.                 throw new ArgumentException("Week salary must be positive!");
  128.             }
  129.             this.weekSalary = value;
  130.         }
  131.     }
  132.  
  133.     public int WorkHoursPerDay
  134.     {
  135.         get
  136.         {
  137.             return this.workHoursPerDay;
  138.         }
  139.         private set
  140.         {
  141.             if (value <= 0 || value > 23)
  142.             {
  143.                 throw new ArgumentException("Hours must be between 1 and 23 :)");
  144.             }
  145.             this.workHoursPerDay = value;
  146.         }
  147.     }
  148.  
  149.     public Worker(string firstName, string lastName, decimal weekSalary, int workHoursPerDay)
  150.         : base(firstName, lastName)
  151.     {
  152.         this.WeekSalary = weekSalary;
  153.         this.WorkHoursPerDay = workHoursPerDay;
  154.     }
  155.  
  156.     public decimal MoneyPerHour()
  157.     {
  158.         return this.weekSalary / this.workHoursPerDay * 5;
  159.     }
  160. }
Advertisement
Add Comment
Please, Sign In to add comment