Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# LINQ ThenBy 메서드로 2차 정렬 구현하기

C# LINQ ThenBy 메서드란?

ThenBy() 메서드는 시퀀스의 요소들을 보조 키(secondary key)를 기준으로 오름차순 정렬할 때 사용합니다. OrderBy()로 1차 정렬을 수행한 뒤, 동일한 정렬 값이 여러 개 존재할 경우 추가적인 정렬 기준을 적용하기 위해 함께 사용됩니다.

기본 사용 방법

ThenBy는 OrderBy() 또는 OrderByDescending() 호출 결과인 IOrderedEnumerable, IOrderedQueryable에서만 체이닝하여 호출할 수 있습니다.

var result = 컬렉션.OrderBy(기준1).ThenBy(기준2);

예제: 문자열 배열 정렬하기

다음과 같은 문자열 배열이 있다고 가정해 보겠습니다.

string[] str = { "AAA", "AAAA", "A", "AAAAA", "AAAAAAAAA" };

이제 람다 식(Lambda Expression)을 활용해 ThenBy() 메서드 내부에 조건을 설정하여, 문자열을 문자 수(길이)에 따라 정렬해 보겠습니다.

IEnumerable<string> res = str.AsQueryable()
    .OrderBy(alp => alp.Length)
    .ThenBy(alp => alp);

위 코드에서 OrderBy(alp => alp.Length)가 문자열 길이를 기준으로 1차 정렬을 수행하고, ThenBy(alp => alp)가 길이가 같은 요소들을 사전순으로 2차 정렬합니다.

전체 예제 코드

using System;
using System.Linq;
using System.Collections.Generic;

public class Demo {
    public static void Main() {
        string[] str = { "AAA", "AAAA", "A", "AAAAA", "AAAAAAAAA" };

        IEnumerable<string> res = str.AsQueryable()
            .OrderBy(alp => alp.Length)
            .ThenBy(alp => alp);

        foreach (string arr in res)
            Console.WriteLine(arr);
    }
}

실행 결과

A
AAA
AAAA
AAAAA
AAAAAAAAA

정리

ThenBy()는 반드시 OrderBy() 이후에 연결해서 사용해야 하는 2차 정렬 메서드입니다. 복잡한 데이터를 여러 조건으로 정렬해야 할 때 코드 가독성을 유지하면서 깔끔하게 처리할 수 있어 실무에서 매우 유용하게 활용됩니다. 내림차순 보조 정렬이 필요하다면 ThenByDescending() 메서드를 사용하면 됩니다.