C\#에서 Dictionary 정렬 방식 의 실현

사용자 정의 클래스:

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
Dictionary 의 Key 값 오름차 순 으로 정렬(Orderby),내림차 순 으로 정렬(Orderby Descending):

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),내림차 순 정렬(Orderby Descending):

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);

      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 에서 첫 번 째 열 로 올 라 간 다음 세 번 째 열 로 올 라 간 다음...

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 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정렬 방식 의 실현 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 C\#Dictionary정렬 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기