您的位置:首页 > 编程语言 > C#

通过写一个Demo展示C#中多种常用的集合排序方法

2015-05-25 18:16 477 查看
不多说,程序很简单,就是将集合中的数据进行排序,但使用到的知识点还是比较多的,大牛勿喷,谨献给初学者!直接上程序吧!

namespace Demo
{
/// <summary>
/// Demo:使用不同排序方法对元素进行排序
/// </summary>
class Program
{
private static void Main(string[] args)
{

ArrayList arrayList = Product.GetArrayList();
List<Product> list = Product.GetList();

//1、使用继承IComparer接口的函数来进行排序
arrayList.Sort(new ProductCompare());
foreach (Product product in arrayList)
{
Console.WriteLine(product.ToString());
}
Console.WriteLine("---------------------------");

//2、使用继承IComparer<T>接口的函数来进行排序
list.Sort(new ProductCompareT());
foreach (Product product in list)
{
Console.WriteLine(product.ToString());
}
Console.WriteLine("---------------------------");

//3、使用委托来进行排序
list.Sort(delegate(Product x, Product y)
{
return x.Price.CompareTo(y.Price);
});
foreach (Product product in list)
{
Console.WriteLine(product.ToString());
}

//4、使用Lambda表达式来进行排序;
list.Sort((x, y) => x.Price.CompareTo(y.Price));
foreach (Product product in list)
{
Console.WriteLine(product.ToString());
}

//5、使用扩展方法来进行排序
foreach (Product product in list.OrderBy(p=>p.Price))
{
Console.WriteLine(product.ToString());
}
Console.ReadKey();
}
}

public class Product
{
public string Name { get; set; }

public decimal Price { get; set; }

public static ArrayList GetArrayList()
{
return new ArrayList()
{
new Product {Name = "WindowsPhone", Price = 10m},
new Product {Name = "Apple", Price = 20m},
new Product {Name = "Android", Price = 5m}
};
}

public static List<Product> GetList()
{
return new List<Product>()
{
new Product {Name = "WindowsPhone", Price = 10m},
new Product {Name = "Apple", Price = 20m},
new Product {Name = "Android", Price = 5m}
};
}

public override string ToString()
{
return String.Format("{0}--{1}", Name, Price);
}
}

/// <summary>
/// 使用IComparer对ArrayList进行排序
/// 显示实现Compare接口,常用ArrayList类型的集合来调用
/// </summary>
public class ProductCompare : IComparer
{
public int Compare(object x, object y)
{
Product first = x as Product;
Product second = y as Product;
if (first != null && second !=null)
{
return first.Price.CompareTo(second.Price);
}
else
{
return -1;
}
}
}

/// <summary>
/// 使用IComparer<Product>进行排序
/// 显式实现Compare接口,常用List<T>类型的集合来调用
/// </summary>
public class ProductCompareT : IComparer<Product>
{
public int Compare(Product x, Product y)
{
Product first = x as Product;
Product second = y as Product;
if (first != null && second != null)
{
return first.Price.CompareTo(second.Price);
}
else
{
return -1;
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐