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

C# orderby 키워드 – LINQ로 리스트 오름차순·내림차순 정렬하기


C#의 orderby 키워드는 LINQ 쿼리 식에서 컬렉션의 요소를 특정 기준에 따라 오름차순(ascending) 또는 내림차순(descending)으로 정렬할 때 사용합니다. 별도의 키워드 없이 orderby만 작성하면 기본값인 오름차순으로 정렬되며, 뒤에 descending 키워드를 붙이면 내림차순으로 정렬됩니다.

정렬 대상 리스트 만들기

먼저 정렬할 문자열 리스트를 준비합니다.

List<string> myList = new List<string>();
myList.Add("truck");
myList.Add("bus");
myList.Add("bicycle");
myList.Add("motorbike");

내림차순으로 정렬하는 방법

문자열의 길이(Length)를 기준으로 내림차순 정렬하려면 다음과 같이 descending 키워드를 추가합니다.

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

전체 예제 코드

아래는 하나의 리스트를 오름차순과 내림차순으로 각각 정렬해 출력하는 완전한 C# 프로그램입니다.

using System;
using System.Collections.Generic;
using System.Linq;
class Demo {
    static void Main() {
        List<string> myList = new List<string>();
        myList.Add("truck");
        myList.Add("bus");
        myList.Add("bicycle");
        myList.Add("motorbike");

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

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

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

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

실행 결과

Ascending order...
bus
truck
bicycle
motorbike
Descending order...
motorbike
bicycle
truck
bus

핵심 정리

  • orderby만 사용하면 오름차순으로 정렬됩니다.
  • orderby ... descending 형태로 작성하면 내림차순으로 정렬됩니다.
  • 위 예제에서는 문자열 자체가 아니라 element.Length, 즉 문자열 길이를 기준으로 정렬했습니다.
  • LINQ의 정렬은 안정적(stable)이므로 기준 값이 같은 요소들은 원래 순서가 그대로 유지됩니다.
  • 메서드 체인 방식을 선호한다면 myList.OrderBy(x => x.Length) 또는 myList.OrderByDescending(x => x.Length)로 동일한 결과를 얻을 수 있습니다.