C#/Array

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

스누누피 2025. 2. 12. 14: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

 

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