본문 바로가기
C#/Array

[C#] Array.Sort() 람다식

by 스누누피 2025. 2. 12.

이번 포스팅 내용은 Array.Sort에 람다식을 이용하는 방법이다.

단순 오름차순으로 변경하는게 아니라 다양한 조건을 사용해 정렬을 하는 법을 찾다가 알게된 문법이다.


Array.Sort()를 사용하면 오름차순 배열을 정렬할 수 있다.

int[] arr1 = { 20, 60, 40, 50, 30, 10 };
Array.Sort(arr1);

Console.WriteLine(string.Join(", ", arr1)); // 10, 20, 30, 40, 50, 60

 

하지만 개발을 하다보면 오름차순 뿐만아니라, 내림차순이나, 기준이 같으면 다른 항목을 비교하는 등 다양한 조건이 요구될 때가 있다.


람다식

람다식은 c#에서 익명 메서드를 만드는 방법으로 간단하게 설명하자면 '(매개변수 목록) => 식'의 형태로 표현된다.

 

Array.Sort(배열, 람다식)을 이용하면 정렬 조건을 변경할 수 있다.

int[] arr2 = { 20, 60, 40, 50, 30, 10 };

Array.Sort(arr2, (x, y) => x > y ? -1 : 1);
Console.WriteLine(string.Join(", ", arr2)); // 60, 50, 40, 30, 20, 10

 

Array.Sort()안의 람다식은 두개의 요소를 비교할 때 사용되며, -1이 return되면 x,y 순으로 1이 return되면 y,x 순으로 정렬 된다. 이를 이용해 위 예시는 x > y면 -1을 반환하기 때문에 내림차순으로 정렬이된다.

 

이를 이용하면 다양한 조건으로 정렬할 수 있다.

string[] arr3 = { "abc", "aaa", "banana", "news", "desk", "bbc", "america" };
Array.Sort(arr3, (x, y) =>
{
    if (x.Length < y.Length)
        return -1; // x,y 순
    else if (x.Length > y.Length)
        return 1; // y,x 순
    else // x.Length == y.Length
        return string.Compare(x, y);
});
Console.WriteLine(string.Join(", ", arr3)); // aaa, abc, bbc, desk, news, banana, america

 

문자열의 길이에 따라 오름차순으로 하고 길이가 같으면 알파벳 내림차순으로 정렬되는 조건으로 정리해 보았다.

'C# > Array' 카테고리의 다른 글

[C#] Array 메서드 모음  (1) 2024.07.16