一、使用LINQ。
二、使用接口IComparable<Product>。
三、使用Sort(Comparison<T> comparison)重载方法。
四、直接使用OrderByDescending或OrderBy方法。
首先定义一个类 Product。
定义如下(两个属性Name、Pirce ):
public class Product
{
public string Name
{
get;
private set;
}
public decimal Pirce
{
get;
private set;
}
public Product(string name, decimal price)
{
Name = name;
Pirce = price;
}
public static List<Product> GetSampleProducts()//添加成员
{
return new List<Product>() {
new Product("wlx1",56m),
new Product("wlx2",110m),
new Product("wlx3",22m),
new Product("wlx4",36.2m)
};
}
public override string ToString()//重写ToString
{
return string.Format("{0}:{1}", Name, Pirce);
}
}
一、使用LINQ。
var products = from pr in Product.GetSampleProducts()
orderby pr.Pirce descending//降序
select pr;
orderby pr.Pirce descending//降序
select pr;
foreach (var p in products)
{
{
Console.WriteLine(p);
}
}
二、使用接口IComparable<Product>
Product类必须要实现方法int CompareTo(T other);
实现如下:
public int CompareTo(Product p) {
return this.Pirce > p.Pirce ? 1 : this.Pirce == p.Pirce ? 0 : -1;
}
return this.Pirce > p.Pirce ? 1 : this.Pirce == p.Pirce ? 0 : -1;
}
实现了接口方法后,就可以使用Sort()方法。使用如下:
var pr=Product.GetSampleProducts();
pr.Sort();
foreach(var p in pr)
{
Console.WriteLine(p);
}
{
Console.WriteLine(p);
}
三、使用Sort(Comparison<T> comparison)重载方法。
List<Product> list = Product.GetSampleProducts();
list.Sort(
(p1, p2) =>
{
return
((Product)p1).Pirce > ((Product)p2).Pirce ? 1 : ((Product)p1).Pirce == ((Product)p2).Pirce ? 0 : -1;
});
foreach (var p in list )
{
Console.WriteLine(p);
}
{
Console.WriteLine(p);
}
四、直接使用OrderByDescending或OrderBy方法。
List<Product> list = Product.GetSampleProducts();
foreach (var p in list.OrderBy(p => p.Pirce))
{
Console.WriteLine(p);
}
{
Console.WriteLine(p);
}