Mega Code Archive

 
Categories / C# / Generics
 

Sort by Name

using System; using System.Collections.ObjectModel; using System.Collections.Generic; using System.Text; using System.Runtime.Serialization; public class Employee : System.IComparable {     private int _id;     private string _name;     private string _rating;     private static SortOrder _order;     public enum SortOrder {         Ascending = 0,         Descending = 1     }     public Employee(int id, string name)         : this(id, name, "Other") {     }     public Employee(int id, string name, string rating) {         this._id = id;         this._name = name;         this._rating = rating;     }     public int Id {         get { return this._id; }         set { this._id = value; }     }     public string Name {         get { return this._name; }         set { this._name = value; }     }     public string Rating {         get { return this._rating; }         set { this._rating = value; }     }     public static SortOrder Order {         get { return _order; }         set { _order = value; }     }     public override bool Equals(Object obj) {         bool retVal = false;         if (obj != null) {             Employee custObj = (Employee)obj;             if ((custObj.Id == this.Id) &&                 (custObj.Name.Equals(this.Name) &&                 (custObj.Rating.Equals(this.Rating))))                 retVal = true;         }         return retVal;     }     public override string ToString() {         return this._id + ": " + this._name;     }     public int CompareTo(Object obj) {         switch (_order) {             case SortOrder.Ascending:                 return this.Name.CompareTo(((Employee)obj).Name);             case SortOrder.Descending:                 return (((Employee)obj).Name).CompareTo(this.Name);             default:                 return this.Name.CompareTo(((Employee)obj).Name);         }     } } public class CollectionTest {     public static void Main() {         List<Employee> collCustList = new List<Employee>();         collCustList.Add(new Employee(99, "H", "P"));         collCustList.Add(new Employee(77, "B", "G"));         collCustList.Add(new Employee(55, "B", "G"));         collCustList.Add(new Employee(88, "B", "P"));         collCustList.Add(new Employee(11, "L", "O"));         foreach (Employee cust in collCustList)             Console.Out.WriteLine(cust);         Employee.Order = Employee.SortOrder.Ascending;         collCustList.Sort(delegate(Employee cust1, Employee cust2) {             return Comparer<Employee>.Default.Compare(cust1, cust2);         });         foreach (Employee cust in collCustList)             Console.Out.WriteLine(cust);         Employee.Order = Employee.SortOrder.Descending;         collCustList.Sort(delegate(Employee cust1, Employee cust2) {             return Comparer<Employee>.Default.Compare(cust1, cust2);         });         foreach (Employee cust in collCustList)             Console.Out.WriteLine(cust);     } }