C#中Dictionary<TKey,TValue>排序方式
自定义类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace CSharp中Dictionary排序方式
{
[Serializable]
public class CustmonizedClass
{
public string stuName { get; set; } public int stuAge { get; set; } public string stuSex { get; set; } public double stuScore { get; set; } }
}
Dictionary<int,自定义类>
按照Dictionary的Key值 升序排序(OrderBy)、降序排序(OrderByDescending):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace CSharp中Dictionary排序方式
{
public class Program
{
static void Main(string[] args)
{
CustmonizedClass cn1 = new CustmonizedClass();
cn1.stuName = "张三";
cn1.stuAge = ;
cn1.stuSex = "男";
cn1.stuScore = 89.5; CustmonizedClass cn2 = new CustmonizedClass();
cn2.stuName = "李四";
cn2.stuAge = ;
cn2.stuSex = "男";
cn2.stuScore = 88.5; CustmonizedClass cn3 = new CustmonizedClass();
cn3.stuName = "王五";
cn3.stuAge = ;
cn3.stuSex = "女";
cn3.stuScore = 89.5; Dictionary<int, CustmonizedClass> dic1 = new Dictionary<int, CustmonizedClass>();
dic1.Add(, cn1);
dic1.Add(, cn2);
dic1.Add(, cn3);
//上面dic1.Add()故意不按照顺序 Dictionary<int, CustmonizedClass> dic1_SortedByKey = dic1.OrderBy(p=>p.Key).ToDictionary(p => p.Key, o => o.Value); foreach (KeyValuePair<int, CustmonizedClass> item in dic1_SortedByKey)
{
Console.WriteLine("Key:{0} ; Value: name:{1}, age:{2}, sex:{3}, score:{4} ",
item.Key,item.Value.stuName,item.Value.stuAge,item.Value.stuSex,item.Value.stuScore);
}
Console.ReadLine();
}
}
}
Dictionary<int, CustmonizedClass> dic1_SortedByKey = dic1.OrderBy(p=>p.Key).ToDictionary(p => p.Key, o => o.Value);
结果截图:
降序排序:
Dictionary<int, CustmonizedClass> dic1_SortedByKey = dic1.OrderByDescending(p => p.Key).ToDictionary(p => p.Key, o => o.Value);
结果截图:

按照Dictionary的Value值的某个属性 升序排序(OrderBy)、降序排序(OrderByDescending):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace CSharp中Dictionary排序方式
{
public class Program
{
static void Main(string[] args)
{
CustmonizedClass cn1 = new CustmonizedClass();
cn1.stuName = "张三";
cn1.stuAge = ;
cn1.stuSex = "男";
cn1.stuScore = 89.5; CustmonizedClass cn2 = new CustmonizedClass();
cn2.stuName = "李四";
cn2.stuAge = ;
cn2.stuSex = "男";
cn2.stuScore = 88.5; CustmonizedClass cn3 = new CustmonizedClass();
cn3.stuName = "王五";
cn3.stuAge = ;
cn3.stuSex = "女";
cn3.stuScore = 89.5; Dictionary<int, CustmonizedClass> dic1 = new Dictionary<int, CustmonizedClass>();
dic1.Add(, cn1);
dic1.Add(, cn2);
dic1.Add(, cn3);
//上面dic1.Add()故意不按照顺序
//Key升序
//Dictionary<int, CustmonizedClass> dic1_SortedByKey = dic1.OrderBy(p=>p.Key).ToDictionary(p => p.Key, o => o.Value);
//Key降序
//Dictionary<int, CustmonizedClass> dic1_SortedByKey = dic1.OrderByDescending(p => p.Key).ToDictionary(p => p.Key, o => o.Value);
//Value中stuAge属性
Dictionary<int, CustmonizedClass> dic1_SortedByKey = dic1.OrderBy(o => o.Value.stuAge).ToDictionary(p => p.Key, o => o.Value); foreach (KeyValuePair<int, CustmonizedClass> item in dic1_SortedByKey)
{
Console.WriteLine("Key:{0} ; Value: name:{1}, age:{2}, sex:{3}, score:{4} ",
item.Key,item.Value.stuName,item.Value.stuAge,item.Value.stuSex,item.Value.stuScore);
}
Console.ReadLine();
}
}
}
关键修改这句:
Dictionary<int, CustmonizedClass> dic1_SortedByKey = dic1.OrderBy(o => o.Value.stuAge).ToDictionary(p=>p.Key,o=>o.Value);
结果截图:

混合排序:类似EXCEL中先按第一列升序、再按第3列的升序……
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace CSharp中Dictionary排序方式
{
public class Program
{
static void Main(string[] args)
{
CustmonizedClass cn1 = new CustmonizedClass();
cn1.stuName = "张三";
cn1.stuAge = ;
cn1.stuSex = "男";
cn1.stuScore = 89.5; CustmonizedClass cn2 = new CustmonizedClass();
cn2.stuName = "李四";
cn2.stuAge = ;
cn2.stuSex = "男";
cn2.stuScore = 88.5; CustmonizedClass cn3 = new CustmonizedClass();
cn3.stuName = "王五";
cn3.stuAge = ;
cn3.stuSex = "女";
cn3.stuScore = 89.5; Dictionary<int, CustmonizedClass> dic1 = new Dictionary<int, CustmonizedClass>();
dic1.Add(, cn1);
dic1.Add(, cn2);
dic1.Add(, cn3);
//上面dic1.Add()故意不按照顺序
//Key升序
//Dictionary<int, CustmonizedClass> dic1_SortedByKey = dic1.OrderBy(p=>p.Key).ToDictionary(p => p.Key, o => o.Value);
//Key降序
//Dictionary<int, CustmonizedClass> dic1_SortedByKey = dic1.OrderByDescending(p => p.Key).ToDictionary(p => p.Key, o => o.Value);
//Value中stuAge属性
//Dictionary<int, CustmonizedClass> dic1_SortedByKey = dic1.OrderBy(o => o.Value.stuAge).ToDictionary(p => p.Key, o => o.Value);
//混合排序 等同于下列的linq语句
//Dictionary<int, CustmonizedClass> dic1_SortedByKey = dic1.OrderBy(o => o.Value.stuScore).ThenByDescending(o=>o.Value.stuAge).ToDictionary(p=>p.Key,o=>o.Value); //linq语句
var dic1_SortedByKey = from n in dic1 orderby n.Value.stuScore, n.Value.stuAge descending select n; foreach (KeyValuePair<int, CustmonizedClass> item in dic1_SortedByKey)
{
Console.WriteLine("Key:{0} ; Value: name:{1}, age:{2}, sex:{3}, score:{4} ",
item.Key,item.Value.stuName,item.Value.stuAge,item.Value.stuSex,item.Value.stuScore);
}
Console.ReadLine();
}
}
}
Dictionary<int, CustmonizedClass> dic1_SortedByKey = dic1.OrderBy(o => o.Value.stuScore).ThenByDescending(o=>o.Value.stuAge).ToDictionary(p=>p.Key,o=>o.Value);
等同于linq语句:
var dic1_SortedByKey = from n in dic1
orderby n.Value.stuScore, n.Value.stuAge descending
select n;
结果截图:

C#中Dictionary<TKey,TValue>排序方式的更多相关文章
- C#中Dictionary排序方式
转载自:https://www.cnblogs.com/5696-an/p/5625142.html 自定义类: https://files.cnblogs.com/files/xunhanliu/d ...
- discuz 修改亮剑积分商城2.91模板(在常用设置中添加商场首页排序方式的背景颜色)
在应用 -> 积分商城 -> 常用设置 中添加 商场首页排序方式 的背景颜色修改功能 步骤: 1.找到并打开此页面对应的模板source\plugin\aljsc\template\set ...
- 使用jdk中提供的排序方式
package com.bjpowernode.t01; import java.util.Arrays; /** * 使用jdk中提供的排序方式 * */public class TestArray ...
- OBjective-C:在可变数组NSMutableArray中添加相同对象后,进行自定义的排序方式输出
以下为自定义的排序方式的实现 #import "Person+Compare.h" @implementation Person (Compare) -(NSComparisonR ...
- C#字典Dictionary排序(顺序、倒序)
这里是针对.NET版本过低的排序方式,没怎么用过,记录一下: 一.创建字典Dictionary 对象 假如 Dictionary 中保存的是一个网站页面流量,key 是网页名称,值value对应的是网 ...
- 浅析SQL查询语句未显式指定排序方式,无法保证同样的查询每次排序结果都一致的原因
本文出处:http://www.cnblogs.com/wy123/p/6189100.html 标题有点拗口,来源于一个开发人员遇到的实际问题 先抛出问题:一个查询没有明确指定排序方式,那么,第二次 ...
- WPF中资源引用方式汇总
在WPF应用程序开发中,总是难以记住各种访问资源的方法,遂逐一记下. 先从资源是否编译到程序集分类 一.程序集资源 资源在编译的时候嵌入到程序集中.WPF中的XAML会被编译为BAML,图片等其他资源 ...
- java中的排序
排序是数据结构中重要的一个部分,也是在实际开发中最易遇到的问题之一,当然了,你也可以不考虑这些排序的算法,直接把要排序的数据insert到数据库中,用数据库的order by再select一下,也能产 ...
- [MySQL] 字符集和排序方式
字符串类型 MySQL的字符串分为两大类: 1)二进制字符串:即一串字节序列,对字节的解释不涉及字符集,因此它没有字符集和排序方式的概念 2)非二进制字符串:由字符构成的序列,字符集用来解释字符串的内 ...
随机推荐
- 知乎背景图 canvas 效果
思路分析: 1.创造一块画布, 2.在画布内随机产生一些小球,小球位置,半径,颜射,大小,速度等都可以随机产生, 3.定义画小球函数与小球移动函数, 4.将每一个小球圆心都与其它小球链接, 5判断每一 ...
- SQLserver2008数据库备份和还原问题(还原是必须有完整备份)
首先,我要说明的是你必须拥有完整的数据库备份,下面的还原教程,才算有用,如果其它问题,请搜索别的大牛的解决办法,本方法只适合菜鸟. 这个连接是站长大人的异常恢复方法,有问题可以自己学习http://w ...
- 【网络】IP地址格式转换(htonl、ntohl;inet_addr、inet_ntoa)
1.htonl ()和ntohl( ) u_long PASCAL FAR ntohl (u_long netlong); u_short PASCAL FAR ntohs (u_short nets ...
- 安装idea开发工具
1.网上去下载一个安装包,有的是需要注册码的(可以网上搜索注册码) 2.设置快捷键,可以直接选择使用eclipse的快捷键 3.配置maven 4.配置Git 5.配置tomcat
- Python文件使用“wb”方式打开,写入内容
Python文件使用"wb"方式打开,写入字符串会报错,因为这种打开方式为:以二进制格式打开一个文件只用于写入.如果该文件已存在则将其覆盖.如果该文件不存在,创建新文件. 所以写入 ...
- express+gulp构建项目(三)gulp任务
这次来看一看gulp是怎么工作的. tasks/paths.js paths.js文件里存放的是gulp任务中需要导入的文件的路径和导出的路径. /** * gulp.src 地址 * gulp.de ...
- C++内存管理的缩影
都说C++内存管理是个大坑.实际上也确实是这样. C++有析构函数,每当一个对象过期的时候,C++会执行两个动作 1.执行析构函数. 2.将对象和对象的所有数据删除. 很多人就会问了,既然有把对象删除 ...
- Kettle6.0安装及问题总结-白痴教程
1.安装JDK 配置java环境变量 2.安装KETTLE: 官方下载地址:http://community.pentaho.com/projects/data-integration/ 下载完后,解 ...
- Jenkins构建时报错:No Space left on device
Jenkins在自动化构建服务的同时也在消耗服务器的磁盘空间,如果构建的项目个数很多,而Jenkins 服务器磁盘空间又不是非常大的话,每隔一段时间磁盘空间就会爆满导致,就会出现磁盘空间不足无法构建的 ...
- [转载]Python 元组、列表、字典、文件
python的元组.列表.字典数据类型是很python(there python is a adjective)的数据结构.这些结构都是经过足够优化后的,所以如果使用好的话,在某些area会有很大的益 ...