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

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 -;
}
}
} /// <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 -;
}
}
}
}

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

  1. 【跟着子迟品 underscore】如何优雅地写一个『在数组中寻找指定元素』的方法

    Why underscore (觉得这部分眼熟的可以直接跳到下一段了...) 最近开始看 underscore.js 源码,并将 underscore.js 源码解读 放在了我的 2016 计划中. ...

  2. Java基础-接口.编写2个接口:InterfaceA和InterfaceB;在接口InterfaceA中有个方法void printCapitalLetter();在接口InterfaceB中有个方法void printLowercaseLetter();然 后写一个类Print实现接口InterfaceA和InterfaceB,要求 方法 实现输出大写英文字母表的功能,printLowerca

    #34.编写2个接口:InterfaceA和InterfaceB:在接口InterfaceA中有个方法void printCapitalLetter():在接口InterfaceB中有个方法void ...

  3. C#中遍历各类数据集合的方法总结

    C#中遍历各类数据集合的方法总结: 1.枚举类型 //遍历枚举类型Sample的各个枚举名称 foreach (string sp in Enum.GetNames(typeof(Sample))) ...

  4. 【.NET】C#中遍历各类数据集合的方法

    [.NET]C#中遍历各类数据集合的方法   C#中遍历各类数据集合的方法,这里自己做下总结: 1.枚举类型             //遍历枚举类型Sample的各个枚举名称             ...

  5. RxJava2 中多种取消订阅 dispose 的方法梳理( 源码分析 )

    Github 相关代码: Github地址 一直感觉 RxJava2 的取消订阅有点混乱, 这样也能取消, 那样也能取消, 没能系统起来的感觉就像掉进了盘丝洞, 迷乱… 下面说说这几种情况 几种取消的 ...

  6. Java中8种常见的排序方法

    排序方法的演示1)插入排序(直接插入排序.希尔排序)2)交换排序(冒泡排序.快速排序)3)选择排序(直接选择排序.堆排序)4)归并排序5)分配排序(基数排序)所需辅助空间最多:归并排序所需辅助空间最少 ...

  7. db2 查看进程 db2中的常用命令及使用方法

    一 高(重要度) 1 启动一个db 2实例使用: net start instanceName 2 停止一个db 2实例使用: net stop instanceName 3 启动配置助手: db2= ...

  8. Javascript中,实现十大排序方法之一(冒泡排序及其优化设想)

    冒泡排序的Javascript实现 首先定义一个取值范围在(0~100000)之间的随机值的长度为10万的数组, function bubbleSort(arr) { console.time('冒泡 ...

  9. JS中json数组多字段排序方法(解决兼容性问题)(转)

    前端对一个json数组进行排序,用户需要动态的根据自己的选择来对json数据进行排序. 由于后台表设计问题所以不能用sql进行排序,这里用到了js的sort方法. 如果对单字段排序,那么很简单,一个s ...

随机推荐

  1. oracle基础函数--decode

    含义解释:decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下:IF 条件=值1 THEN RETURN(翻译值1)ELSIF 条件=值2 THEN R ...

  2. 冲刺博客NO.10

    今天做了什么:将程序整合到一起,出现了不少小错误,但是在讨论后都解决了. 遇到的难题:没遇到什么大困难

  3. redis知识点杂记

    最近梳理了一下redis的基本知识.本文会从redis的简单使用.redis的数据类型.redis持久化三个方面做简单阐述和总结. 一.Redis基本操作 1.key的规则 不能使用\n空格.其他都可 ...

  4. 背水一战 Windows 10 (68) - 控件(控件基类): UIElement - Pointer 相关事件, Tap 相关事件, Key 相关事件, Focus 相关事件

    [源码下载] 背水一战 Windows 10 (68) - 控件(控件基类): UIElement - Pointer 相关事件, Tap 相关事件, Key 相关事件, Focus 相关事件 作者: ...

  5. 2019年微服务5大趋势,你pick哪个?

    2018年对于微服务来说是非常重要的一年,这一年Service Mesh开始崭露头角,解决服务间复杂的通信问题,这一年很多国内互联网公司已经有了较为成熟的微服务实践案例,网易云主办的微服务实践沙龙中也 ...

  6. 解决“UnicodeEncodeError: 'gbk' codec can't encode character u'\xa9' in position 24051: illegal multibyte sequence”错误

    今天我在爬取一个网页时出现了下面这个错误: UnicodeEncodeError: 'gbk' codec can't encode character u'\xa9' in position 240 ...

  7. Android之控件与布局,结构知识点,基础完结

    版权声明:未经博主允许不得转载 在Android中我们常常用到很多UI控件,如TextView,EditText,ImageView,Button,ImageButton,ToggleButton,C ...

  8. 软件测试人员需要掌握的linux命令(一)

    有些技能可以事半功倍,熟练的使用这些命令可以提高工作效率,并且结合这些命令对测试过程中遇到的问题进行一些初步的定位. 一:目录与文件操作: ls 使用权限:所有人功能 : 显示指定工作目录下之内容(列 ...

  9. 线程误区-join,wait(里边还是调用的wait)

    1.一个线程执行结束后会执行该线程自身对象的notifyAll方法,这个是在jvm中实现的. 2.join的作用是:当我们调用某个线程的这个方法时,这个方法会挂起调用线程,直到被调用线程(thread ...

  10. Java并发框架AbstractQueuedSynchronizer(AQS)

    1.前言 本文介绍一下Java并发框架AQS,这是大神Doug Lea在JDK5的时候设计的一个抽象类,主要用于并发方面,功能强大.在新增的并发包中,很多工具类都能看到这个的影子,比如:CountDo ...