Orderby로 딕셔너리(Dictionary)와 2차원 List 정렬 방법을 알아봅시다.
1. 2차원 List 정렬 방법
2. 딕셔너리(Dictionary) Key, Value 기준으로 정렬 방법
두가지 방법을 모두 알아보도록 합니다.
방법을 두가지 모두 Orderby로 가능합니다.
물론 람다식을 조금 이용해야합니다.
1. 2차원 List 정렬 방법
먼저, 아래와 같은 리스트를 하나 생성해 줍니다.
소스 코드
List<List<string>> list1 = new List<List<string>>();
list1.Add(new List<string> { "item1", "512"});
list1.Add(new List<string> { "item3", "12" });
list1.Add(new List<string> { "item2", "2" });
list1.Add(new List<string> { "item4", "42" });
1-1) 2차원 List를 인덱스 1을 기준으로 오름차순 정렬
OrderBy(x=> Int32.Parse(x[1])) 으로 대괄호에 인덱스를 1로 입력해서 사용하면 됩니다.
Int32.Parse 를 넣어준 이유는 리스트의 값이 숫자가 아니라 String 이기 때문에 파싱을 해줬습니다.
소스 코드
var b = list1.OrderBy(x => Int32.Parse(x[1]));
foreach (var item in b)
Console.WriteLine(item[0] + ":" + item[1]);
결과
item2:2
item3:12
item4:42
item1:512
1-2) 2차원 List를 인덱스 0을 기준으로 오름차순 정렬
OrderBy(x=> x[0]) 으로 대괄호에 인덱스를 0으로 입력해서 사용하면 됩니다.
소스 코드
var c = list1.OrderBy(x => x[0]);
foreach (var item in c)
Console.WriteLine(item[0] + ":" + item[1]);
결과
item1:512
item2:2
item3:12
item4:42
1-3) 2차원 List를 인덱스 0을 기준으로 내림차순 정렬
OrderByDescending을 사용하면 내림차순으로 정렬됩니다.
소스 코드
var d = list1.OrderByDescending(x => x[0]);
foreach (var item in d)
Console.WriteLine(item[0] + ":" + item[1]);
결과
item4:42
item3:12
item2:2
item1:512
2. 딕셔너리(Dictionary) 키, 값 기준으로 정렬하기
딕셔너리도 Orderby로 쉽게 키 기준으로 소팅과 Value(값) 기준으로 Sort을 쉽게 할 수 있습니다.
딕셔너리도 아래와 같이 생성해줍니다.
소스 코드
Dictionary<string, string> diction = new Dictionary<string, string>();
diction.Add("item1", "512");
diction.Add("item3", "12");
diction.Add("item2", "2");
diction.Add("item4", "42");
2-1) Dictionary Value 기준으로 오름차순 정렬 (텍스트 오름차순)
소스 코드
var e = diction.OrderBy(x => x.Value);
foreach (var item in e)
Console.WriteLine(item.Key + ":" + item.Value);
결과
item3:12
item2:2
item4:42
item1:512
2-2) Dictionary Value 기준으로 오름차순 정렬 (숫자 오름차순)
소스 코드
var f = diction.OrderBy(x => Int32.Parse(x.Value));
foreach (var item in f)
Console.WriteLine(item.Key + ":" + item.Value);
결과
item2:2
item3:12
item4:42
item1:512
2-3) Dictionary Key 기준으로 오름차순 정렬
소스 코드
var g = diction.OrderBy(x => x.Key);
foreach (var item in g)
Console.WriteLine(item.Key + ":" + item.Value);
결과
item1:512
item2:2
item3:12
item4:42
2-4) Dictionary Key 기준으로 내림차순 정렬
소스 코드
var h = diction.OrderByDescending(x => x.Key);
foreach (var item in h)
Console.WriteLine(item.Key + ":" + item.Value);
결과
item4:42
item3:12
item2:2
item1:512
예전 포스팅 자료중에 통으로 작성한 예제도 함께 올리면서 마무리 하겠습니다. (아래 내용은 참조)
전체 묶음 소스 코드
List<List<string>> a = new List<List<string>>();
a.Add(new List<string> { "item1","512"});
a.Add(new List<string> { "item2", "12" });
a.Add(new List<string> { "item3", "2" });
a.Add(new List<string> { "item4", "42" });
Dictionary<string, string> diction = new Dictionary<string, string>();
diction.Add("item1", "512");
diction.Add("item2", "12");
diction.Add("item3", "2");
diction.Add("item4", "42");
var d = diction.OrderBy(x => Int32.Parse(x.Value));
//var d = diction.OrderBy(x => x.Value); //문자열로 비교하려면 이렇게 사용하면된다.
foreach (var item in d)
{
Console.WriteLine(item.Key + ":" + item.Value);
}
var b = a.OrderBy(x => Int32.Parse(x[1]));
foreach (var item in b)
{
Console.WriteLine(item[0] + ":"+item[1]);
}
결과
'반도체 프로그램 개발 > C#' 카테고리의 다른 글
[VisualStudio] 참조 COM HRESULT E_FAIL 에러 해결 방법 (0) | 2021.10.07 |
---|---|
[C#] Substring 으로 문자열 자르기 (0) | 2021.09.16 |