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

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. Android studio 中的TabWidget

    1.TabWidget 的 layout文件 <?xml version="1.0" encoding="utf-8"?> <TabHost ...

  2. 04SQL 查询当天,本月,本周的记录

    SQL 查询当天,本月,本周的记录   SELECT * FROM 表 WHERE CONVERT(Nvarchar, dateandtime, 111) = CONVERT(Nvarchar, GE ...

  3. SDWebImage之SDWebImageDownloader

    SDWebImageDownloader完成了对网络图片的异步下载工作,准确说这个类是一个文件下载的工具类,真正的网络请求是在继承于NSOperation的SDWebImageDownloaderOp ...

  4. 技术文档生成工具:appledoc

    做项目一般都会要求写技术文档,特别是提供SDK或者基础组件的.如果手写这类技术文档的话,工作量比编写代码也少不了多少.比如 Java 语言本身就自带 javadoc 命令,可以从源码中抽取文档.本篇我 ...

  5. redis epoll 原理梗概

    redis 是一个单线程却性能非常好的内存数据库, 主要用来作为缓存系统. redis 采用网络IO多路复用技术来保证在多连接的时候, 系统的高吞吐量.为什么 Redis 中要使用 I/O 多路复用这 ...

  6. MySql安装与使用(linux)

    安装 MySQL 注意:此处安装是yum安装为例: MySQL安装 #yum install mysql-server 完后显示如下: MySQL初始化 #service mysqld start 查 ...

  7. DFSMN结构快速解读

    参考文献如下: (1) Deep Feed-Forward Sequential Memory Networks for Speech Synthesis (2) Deep FSMN for Larg ...

  8. 自动化测试框架的Step By Step搭建及测试实战(1)

    1.1什么是自动化测试框架 1.什么是自动化框架 自动化框架是应用与自动化测试的程序框架,它提供了可重用的自动化测试模块,提供最基础的自动化测试功能,或提供自动化测试执行和管理功能的架构模块.它是由一 ...

  9. [视频]K8飞刀 BadUSB Teensy自动种马演示教程

    [视频]K8飞刀 Teensy USB自动种马演示教程 链接: https://pan.baidu.com/s/13bM1XSLrhlf90FDmPGfo1g 提取码: gy2q 源码:https:/ ...

  10. Netty心跳机制

    一.概念介绍网络中的接收和发送数据都是使用操作系统中的SOCKET进行实现.但是如果此套接字已经断开,那发送数据和接收数据的时候就一定会有问题.可是如何判断这个套接字是否还可以使用呢?这个就需要在系统 ...