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

C# OrderBy 절 완벽 정리 – LINQ로 컬렉션 정렬하는 방법

C#의 orderby 절은 LINQ 쿼리에서 컬렉션의 요소들을 지정된 필드를 기준으로 특정 순서대로 정렬할 때 사용됩니다. 정렬 순서는 오름차순(ascending) 또는 내림차순(descending)으로 지정할 수 있습니다.

orderby 절이란?

orderby는 System.Linq 네임스페이스에서 제공하는 LINQ 쿼리 구문의 핵심 요소 중 하나입니다. 문자열 길이, 이름, 날짜 등 다양한 기준으로 데이터를 정렬할 수 있으며, 기본 정렬 방식은 오름차순입니다. 내림차순으로 정렬하려면 반드시 descending 키워드를 함께 작성해야 합니다.

예제 데이터 준비

다음과 같이 문자열 요소를 담은 리스트가 있다고 가정해 보겠습니다.

List<string> myList = new List<string>();

// 요소 추가
myList.Add("iOS by Apple");
myList.Add("Android by Google");
myList.Add("Symbian by Nokia");

내림차순으로 정렬하기

이제 orderby 절과 descending 키워드를 사용하여 문자열 길이를 기준으로 내림차순 정렬을 수행해 보겠습니다.

var myLen = from element in myList
            orderby element.Length descending
            select element;

위 쿼리는 각 문자열의 Length(길이)를 기준으로 요소들을 긴 순서부터 짧은 순서대로 재배열합니다.

전체 코드 예제

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

class Demo {
    static void Main() {
        List<string> myList = new List<string>();
        myList.Add("iOS by Apple");
        myList.Add("Android by Google");
        myList.Add("Symbian by Nokia");

        var myLen = from element in myList
                    orderby element.Length descending
                    select element;

        Console.WriteLine("내림차순 정렬 결과...");

        foreach (string str in myLen) {
            Console.WriteLine(str);
        }
    }
}

실행 결과

내림차순 정렬 결과...
Android by Google
Symbian by Nokia
iOS by Apple

핵심 정리

orderby 절을 활용하면 복잡한 정렬 로직을 직접 구현하지 않고도 간결한 쿼리 구문만으로 컬렉션을 손쉽게 정렬할 수 있습니다. 참고로 여러 기준으로 정렬해야 하는 경우에는 쉼표(,)로 구분하여 여러 정렬 키를 지정하는 것도 가능합니다. 예를 들어 orderby a.Name ascending, a.Age descending처럼 조합하면 더욱 유연한 정렬 처리가 가능합니다.