C# 自定义排序
/// <summary>
/// 实体
/// </summary>
public class Product
{
public int ID { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
public DateTime PublishDate { get; set; }
}
/// <summary>
/// 实体集合
/// </summary>
public class PrductList
{
public List<Product> Books { get; set; }
}
//一个排序依据枚举:
public enum ComparisonType
{
Price, PublishDate
}
//一个排序基类,实现具体排序
public class BookComparison : IComparer<Product>
{
private ComparisonType type;
public BookComparison(ComparisonType type)
{
this.type = type;
}
public int Compare(Product x, Product y)
{
int order = 0;
switch (this.type)
{
case ComparisonType.Price:
order = y.Price.CompareTo(x.Price);//更换x和y的顺序可以实现升序或者降序功能
break;
case ComparisonType.PublishDate:
order = y.PublishDate.CompareTo(x.PublishDate);//更换x和y的顺序可以实现升序或者降序功能
break;
default:
break;
}
int d = order;
return order;
}
}
public class MyTest
{
public void test()
{
PrductList list = new PrductList();
List<Product> Books = new List<Product>();
list.Books = Books;
list.Books.Add(new Product()
{
ID = 1,
Name = "LiSi",
Price = 12.5M,
PublishDate = DateTime.Parse("2016-06-03")
});
list.Books.Add(new Product()
{
ID = 1,
Name = "Zhangsan",
Price = 12.8M,
PublishDate = DateTime.Parse("2016-06-05")
});
list.Books.Add(new Product()
{
ID = 1,
Name = "Wangwu",
Price = 11.5M,
PublishDate = DateTime.Parse("2016-06-01")
});
list.Books.Sort(new BookComparison(ComparisonType.Price).Compare);
foreach (var item in list.Books)
{
Console.WriteLine(string.Format("{0}:{1}, {2}", item.Name, item.Price, item.PublishDate.ToString()));
}
}
}
C# 自定义排序的更多相关文章
- Java集合框架实现自定义排序
Java集合框架针对不同的数据结构提供了多种排序的方法,虽然很多时候我们可以自己实现排序,比如数组等,但是灵活的使用JDK提供的排序方法,可以提高开发效率,而且通常JDK的实现要比自己造的轮子性能更优 ...
- DataTable自定义排序
使用JQ DataTable 的时候,希望某列数据可以进行自定义排序,操作如下:(以中文排序和百分比排序为例) 1:定义排序类型: //百分率排序 jQuery.fn.dataTableExt.oSo ...
- 干货之UICollectionViewFlowLayout自定义排序和拖拽手势
使用UICollectionView,需要使用UICollectionViewLayout控制UICollectionViewCell布局,虽然UICollectionViewLayout提供了高度自 ...
- DataGridView 绑定List集合后实现自定义排序
这里只贴主要代码,dataList是已添加数据的全局变量,绑定数据源 datagridview1.DataSource = dataList,以下是核心代码. 实现点击列表头实现自定义排序 priva ...
- 【转】c++中Vector等STL容器的自定义排序
如果要自己定义STL容器的元素类最好满足STL容器对元素的要求 必须要求: 1.Copy构造函数 2.赋值=操作符 3.能够销毁对象的析构函数 另外: 1. ...
- mysql如何用order by 自定义排序
mysql如何用order by 自定义排序 id name roleId aaa bbb ccc ddd eee ,MySQL可以通过field()函数自定义排序,格式:field(value,st ...
- python 自定义排序函数
自定义排序函数 Python内置的 sorted()函数可对list进行排序: >>>sorted([36, 5, 12, 9, 21]) [5, 9, 12, 21, 36] 但 ...
- 定制对ArrayList的sort方法的自定义排序
java中的ArrayList需要通过collections类的sort方法来进行排序 如果想自定义排序方式则需要有类来实现Comparator接口并重写compare方法 调用sort方法时将Arr ...
- Qt之QHeaderView自定义排序(获取正确的QModelIndex)
简述 前几节中分享过关于自定义排序的功能,貌似我们之前的内容已经可以很好地解决排序问题了,但是,会由此引发一些很难发现的问题...比如:获取QModelIndex索引错误. 下面,我们先来实现一个整行 ...
- Qt之QHeaderView自定义排序(终极版)
简述 本节主要解决自定义排序衍生的第二个问题-将整形显示为字符串,而排序依然正常. 下面我们介绍三种方案: 委托绘制 用户数据 辅助列 很多人也许会有疑虑,平时都用delegate来绘制各种按钮.图标 ...
随机推荐
- Android开发视频学习(2)
S02E05_Android当中的线程 Worker Thread不允许操作UI,只能在Main Thread操作UI S02E06_Handler(一) Handler,Looper,Message ...
- 基于WebForm+EasyUI的业务管理系统形成之旅 -- 数据统计(Ⅳ)
上篇<基于WebForm+EasyUI的业务管理系统形成之旅 -- 首页快捷方式>,主要介绍通过添加首页快捷方式,快速进入各个应用菜单功能. 将常用的菜单功能作为快捷方式,避免由于寻找诸多 ...
- Yii框架-Smarty-整合
一.搭建yii框架 一.首先你得下个YII框架的源码 :下载地址:http://www.yiiframework.com/download/ 二.把下载到的源码解压放到一个PHP可访问的位置:如我的 ...
- linux下的oracle11gR2静默安装,经验分享
说明: 1.我的linux是64位的redhat6.5,安装的oracle版本是11.2.0的. 2.我这是自己安装的linux虚拟机,主机名为ora11g,ip为192.168.100.122 3. ...
- 关于在SharePoint2013中弹出模态化窗口的问题及关闭事件。
js: /*弹出对话框方法开始*//** 弹窗方法(需要回传值时,自定义回调方法)* @url: 弹出窗口页面url* @width: 宽度* @height: 高度* @callback: 回调函数 ...
- FZU Problem 2125 简单的等式
思路:x绝对小于根号n,再由s(x,m)可以缩小范围.1e9十六进制大约算出每位和相加100左右.这种题直接判断范围再暴力. #include<stdio.h> #include<s ...
- hive0.11的编译/安装/配置
一.获取hive 0.11文件 1.直接在apache网站下载release版 2.自己下载源码编译.方法: git clone https://github.com/amplab/hive.git ...
- WPF的MVVM模式
Model->數據模型View->視圖View-Model->連接數據模型和視圖
- 教程-Win7极速优化20项
1. 加快Windows 7系统启动速度 启动-“msconfig”命令-系统配置-“引导”选项(英文系统是Boot)-点击“高级选项”--勾选“处理器数”和“最大内存”. 2. 加快Wi ...
- JS----JS调试技巧
骨灰级调试大师Alert 那还是互联网刚刚起步的时代,网页前端还主要以内容展示为主,浏览器脚本还只能为页面提供非常简单的辅助功能的时候.那个时候,网页主要运行在以IE6为主的浏览器中,JS的调试功能还 ...