List<T>的排序
方法一、sort()
(1)当list中存的是简单数据类型时;
List<int> a = new List<int>() { 4, 5, 1, 2, 10, 78, 12, 5 };
a.Sort();//默认升序
foreach (var t in a)
{
Console.WriteLine(t);
}
Console.ReadKey();
(2)当list中存的是自定义数据类型时;
public void Sort(Comparison<T> comparison);
其中参数Comparison<T>委托的定义为:
public delegate int Comparison<in T>(T x, T y);
/// <summary>
/// 定义一个数据类型
/// </summary>
public class Student
{
public int ID
{
set;
get;
} public string Name
{
set;
get;
} public static List<Student> GetStudents()
{
List<Student> stu = new List<Student>();
List<int> a = new List<int>() { 4, 5, 1, 2, 10, 78, 12, 5 };
foreach (int t in a)
{
stu.Add(new Student { ID = t,Name="编号为"+ t +"的学生"});
}
return stu;
}
}
//排序,sort方法参数lambda表达式,根据学生ID排序
List<Student> stus = Student.GetStudents();
stus.Sort((item1, item2) =>
{
if (item1.ID > item2.ID)
{
return 1;//升序,-1降序
}
else if (item1.ID < item2.ID)
{
return -1;
}
else
{
return 0;
}
});
stus.ForEach(item => Console.WriteLine(item.ID + System.Environment.NewLine + item.Name));
Console.ReadKey();
方法二、OrderBy()
public static IOrderedEnumerable<TSource> OrderBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector);
List<Student> stus = Student.GetStudents();
//升序,降序OrderByDescending
stus = stus.OrderBy(item =>
{
return item.ID;
}).ToList();
stus.ForEach(item => Console.WriteLine(item.ID + System.Environment.NewLine + item.Name));
Console.ReadKey();
结果:
List<T>的排序的更多相关文章
- javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈
Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换 ...
- iOS可视化动态绘制八种排序过程
前面几篇博客都是关于排序的,在之前陆陆续续发布的博客中,我们先后介绍了冒泡排序.选择排序.插入排序.希尔排序.堆排序.归并排序以及快速排序.俗话说的好,做事儿要善始善终,本篇博客就算是对之前那几篇博客 ...
- JavaScript实现常用的排序算法
▓▓▓▓▓▓ 大致介绍 由于最近要考试复习,所以学习js的时间少了 -_-||,考试完还会继续的努力学习,这次用原生的JavaScript实现以前学习的常用的排序算法,有冒泡排序.快速排序.直接插入排 ...
- [C#][算法] 用菜鸟的思维学习算法 -- 马桶排序、冒泡排序和快速排序
用菜鸟的思维学习算法 -- 马桶排序.冒泡排序和快速排序 [博主]反骨仔 [来源]http://www.cnblogs.com/liqingwen/p/4994261.html 目录 马桶排序(令人 ...
- 算法与数据结构(十三) 冒泡排序、插入排序、希尔排序、选择排序(Swift3.0版)
本篇博客中的代码实现依然采用Swift3.0来实现.在前几篇博客连续的介绍了关于查找的相关内容, 大约包括线性数据结构的顺序查找.折半查找.插值查找.Fibonacci查找,还包括数结构的二叉排序树以 ...
- 算法与数据结构(七) AOV网的拓扑排序
今天博客的内容依然与图有关,今天博客的主题是关于拓扑排序的.拓扑排序是基于AOV网的,关于AOV网的概念,我想引用下方这句话来介绍: AOV网:在现代化管理中,人们常用有向图来描述和分析一项工程的计划 ...
- 使用po模式读取豆瓣读书最受关注的书籍,取出标题、评分、评论、题材 按评分从小到大排序并输出到txt文件中
#coding=utf-8from time import sleepimport unittestfrom selenium import webdriverfrom selenium.webdri ...
- javascript排序
利用array中的sort()排序 w3cfunction sortNumber(a,b) { return a - b } var arr = new Array(6) arr[0] = " ...
- iOS自定义model排序
在开发过程中,可能需要按照model的某种属性排序. 1.自定义model @interface Person : NSObject @property (nonatomic,copy) NSStri ...
- Lucene4.4.0 开发之排序
排序是对于全文检索来言是一个必不可少的功能,在实际运用中,排序功能能在某些时候给我们带来很大的方便,比如在淘宝,京东等一些电商网站我们可能通过排序来快速找到价格最便宜的商品,或者通过排序来找到评论数最 ...
随机推荐
- Android 基础-1.0 按钮4种点击事件
第一种 测试使用 直接xml添加,平时在自己的测试demo中使用比较多. 1.直接在xml里给按钮添加点击事件 android:onClick="btn_click" 2.按住op ...
- hibernate的update、merge和saveOrUpdate的区别(转)
1.首先 saveOrUpdate返回void 也就是什么都不返回 而merge会返回一个对象 2.其次 saveOrUpdate的做法是:自动判断该对象是否曾经持久化过,如果曾持久化过则使用upda ...
- nodejs buffer 总结
JavaScript 语言自身只有字符串数据类型,没有二进制数据类型.Buffer 类,该类用来创建一个专门存放二进制数据的缓存区. 一个 Buffer 类似于一个整数数组,但它对应于 V8 堆内存之 ...
- codeforces 632C C. The Smallest String Concatenation(sort)
C. The Smallest String Concatenation time limit per test 3 seconds memory limit per test 256 megabyt ...
- 小米5安装Xposed框架——需要解锁刷机
Xposed官网 https://forum.xda-developers.com/xposed 官方模块厂库 https://repo.xposed.info/ 中文站点 https://xpose ...
- Gym - 100801G: Graph (贪心+set+拓扑)(好题)
题意:给定一个N点M边的有向图,叫你加最多K条边,使得最小拓扑序最大. 思路:不是那么简单的题. 参照了别人的代码, 最后想通了. 贪心原则: 用两个单调队列维护, 第一个序列S1单增, 表示当前入 ...
- POJ1741 Tree(树的点分治基础题)
Give a tree with n vertices,each edge has a length(positive integer less than 1001).Define dist(u,v) ...
- Deferred Shading延迟渲染
Deferred Shading 传统的渲染过程通常为:1)绘制Mesh:2)指定材质:3)处理光照效果:4)输出.传统的过程Mesh越多,光照处理越费时,多光源时就更慢了. 延迟渲染的步骤:1)Pa ...
- C# 性能总结
尽量使用using语句块和finally (实现IDisposable) 尽量使用单个大程序集而不是多个小程序集 (使用NGen.exe) 使用sealed关键字 权衡虚函数 使用弱引用
- mysql的简单操作
创建数据库并设定字符集: CREATE DATABASE hidb CHARACTER SET ‘utf8’; 使用数据库: use hidb; 删除数据库: DROP DATABASE hidb; ...