C#中DictionaryTKey,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 = 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);
結(jié)果截圖:
降序排序:
Dictionary<int, CustmonizedClass> dic1_SortedByKey = dic1.OrderByDescending(p => p.Key).ToDictionary(p => p.Key, o => o.Value);
結(jié)果截圖:
按照Dictionary的Value值的某個(gè)屬性 升序排序(OrderBy)、降序排序(OrderByDescending):
View Code關(guān)鍵修改這句:
?Dictionary<int, CustmonizedClass> dic1_SortedByKey = dic1.OrderBy(o => o.Value.stuAge).ToDictionary(p=>p.Key,o=>o.Value);
結(jié)果截圖:
混合排序:類似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 = 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()故意不按照順序//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 dic1orderby n.Value.stuScore, n.Value.stuAge descendingselect 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;
結(jié)果截圖:
總結(jié)
以上是生活随笔為你收集整理的C#中DictionaryTKey,TValue排序方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中信金卡额度一般多少
- 下一篇: 民间借贷法律保护的最高年利率是多少