赞
踩
按照Dictionary的Key值 升序排序(OrderBy)、降序排序(OrderByDescending):
-
- 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 = 18;
- cn1.stuSex = "男";
- cn1.stuScore = 89.5;
-
- CustmonizedClass cn2 = new CustmonizedClass();
- cn2.stuName = "李四";
- cn2.stuAge = 19;
- cn2.stuSex = "男";
- cn2.stuScore = 88.5;
-
-
- CustmonizedClass cn3 = new CustmonizedClass();
- cn3.stuName = "王五";
- cn3.stuAge = 17;
- cn3.stuSex = "女";
- cn3.stuScore = 89.5;
-
- Dictionary<int, CustmonizedClass> dic1 = new Dictionary<int, CustmonizedClass>();
- dic1.Add(3, cn1);
- dic1.Add(1, cn2);
- dic1.Add(2, 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):
View Code
关键修改这句:
Dictionary<int, CustmonizedClass> dic1_SortedByKey = dic1.OrderBy(o => o.Value.stuAge).ToDictionary(p=>p.Key,o=>o.Value);
结果截图:
混合排序:类似EXCEL中先按第一列升序、再按第3列的升序……
View Code
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;
结果截图:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。