Tuesday, May 10, 2011

C# – Sorting collection of objects using comparer

class Program
{
static void Main(string[] args)
{
List<Product> products = new List<Product>();
Product p = new Product(3, “B”, 100);
products.Add(p);
p = new Product(2, “A”, 101);
products.Add(p);
p = new Product(1, “C”, 102);
products.Add(p);
products.Sort(Product.PriceComparison);
foreach (Product product in products)
{
Console.WriteLine(“Name:” + product.ProductName);
}
Console.ReadLine();
}
}
public class Product : IComparable<Product>
{
private int id;
private string prodName;
private decimal price;
public static Comparison<Product> PriceComparison = delegate(Product p1, Product p2)
{
return p1.price.CompareTo(p2.price);
};
public static Comparison<Product> IDComparison = delegate(Product p1, Product p2)
{
return p1.id.CompareTo(p2.id);
};
public int ProductID { get { return id; } set { id = value; } }
public string ProductName { get { return prodName; } set { prodName = value; } }
public decimal UnitPrice { get { return price; } set { price = value; } }
public Product(int id, string prodName, decimal price)
{
this.id = id;
this.prodName = prodName;
this.price = price;
}
#region IComparable<Product> Members
public int CompareTo(Product other)
{
return ProductName.CompareTo(other.ProductName);
}
#endregion
public override string ToString()
{
return string.Format(“Id: {0} Name: {1} Price: {2}”, id, prodName, price);
}
}

No comments:

Post a Comment