집게사장의 꿈

LINQ 정렬 메서드 본문

기타/C#

LINQ 정렬 메서드

Krapboss 2024. 7. 24. 00:28

시퀀스 요소의 오름차순 정렬

Orderby

public static System.Linq.IOrderedEnumerable<TSource> OrderBy<TSource,TKey> (
this System.Collections.Generic.IEnumerable<TSource> source,
Func<TSource,TKey> keySelector);

반환
IOrderedEnumerable<TSource>
요소가 키에 따라 정렬된 IOrderedEnumerable<TElement>입니다.
예외
ArgumentNullException source 또는 keySelector가 null인 경우
Func<TSource,TKey> keySelector TSource에서 오름차순을 위한 기준 값은 반환하는 대리자

 

*나이를 기준으로 오름차순 정렬

class Pet
{
    public string Name { get; set; }
    public int Age { get; set; }
}

public static void OrderByEx1()
{
    Pet[] pets = { new Pet { Name="Barley", Age=8 },
                   new Pet { Name="Boots", Age=4 },
                   new Pet { Name="Whiskers", Age=1 } };

    IEnumerable<Pet> query = pets.OrderBy(pet => pet.Age);

    foreach (Pet pet in query)
    {
        Console.WriteLine("{0} - {1}", pet.Name, pet.Age);
    }
}

/*
 This code produces the following output:

 Whiskers - 1
 Boots - 4
 Barley - 8
*/

 


 

시퀀스 요소의 내림차순 정렬

OrderByDescending

public static System.Linq.IOrderedEnumerable<TSource> OrderByDescending<TSource,TKey> (this System.Collections.Generic.IEnumerable<TSource> source,
Func<TSource,TKey> keySelector);

반환
IOrderedEnumerable<TSource>
요소가 키에 따라 정렬된 IOrderedEnumerable<TElement>입니다.
예외
ArgumentNullException source 또는 keySelector가 null인 경우
Func<TSource,TKey> keySelector TSource에서 오름차순을 위한 기준 값은 반환하는 대리자

 

*나이를 기준으로 내림차순 정렬

class Pet
{
    public string Name { get; set; }
    public int Age { get; set; }
}

internal class Test // 웰컴 키트 
{
    static void Main(string[] args)
    {
        Pet[] pets = { new Pet { Name="Barley", Age=8 },
               new Pet { Name="Boots", Age=4 },
               new Pet { Name="Whiskers", Age=1 } };

        IEnumerable<Pet> query = pets.OrderByDescending(pet => pet.Age);

        foreach (Pet pet in query)
        {
            Console.WriteLine("{0} - {1}", pet.Name, pet.Age);
        }
    }
}

 

 


시퀀스 요소를 다시 오름차순으로 정렬하는

ThenBy

public static System.Linq.IOrderedEnumerable<TSource> ThenBy<TSource,TKey> (
this System.Linq.IOrderedEnumerable<TSource> source,
Func<TSource,TKey> keySelector);

 

this System.Linq.IOrderedEnumerable<TSource> source 이미 정렬된 요소가 들어있는 시퀀스
Func<TSource,TKey> keySelector 다시 정렬할 기준 키값을 반환하는 대리자

 

* IOrderedEnumerable로 이미 정렬된 요소를 지정된 키값을 기준으로 다시 정렬하는 

static void Main(string[] args)
{
    string[] fruits = { "grape", "passionfruit", "banana", "mango",
              "orange", "raspberry", "apple", "blueberry" };

    //이미 정렬된 시퀀스를 다시 문자열의 사전 순으로 정렬합니다.
    IEnumerable<string> query =
        fruits.OrderBy(fruit => fruit.Length).ThenBy(fruit => fruit);

    foreach (string fruit in query)
    {
        Console.WriteLine(fruit);
    }

}

 

 

 


시퀀스 요소를 다시 내림차순으로 정렬하는

ThenByDescending

public static System.Linq.IOrderedEnumerable<TSource> ThenBy<TSource,TKey> (
this System.Linq.IOrderedEnumerable<TSource> source,
Func<TSource,TKey> keySelector);

 

this System.Linq.IOrderedEnumerable<TSource> source 이미 정렬된 요소가 들어있는 시퀀스
Func<TSource,TKey> keySelector 다시 정렬할 기준 키값을 반환하는 대리자

 

* IOrderedEnumerable로 이미 정렬된 요소를 지정된 키값을 기준으로 다시 정렬하는 

static void Main(string[] args)
{
    string[] fruits = { "grape", "passionfruit", "banana", "mango",
              "orange", "raspberry", "apple", "blueberry" };

    //이미 정렬된 시퀀스를 다시 문자열의 사전 순으로 정렬합니다.
    IEnumerable<string> query =
        fruits.OrderBy(fruit => fruit.Length).ThenByDescending(fruit => fruit);

    foreach (string fruit in query)
    {
        Console.WriteLine(fruit);
    }

}

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

백준 C# 1916 내려가기  (0) 2024.08.14
2의 보수  (0) 2024.07.31
LINQ SelectMany 시퀀스 평면화  (0) 2024.07.24
LINQ 집합  (0) 2024.07.23
LINQ 집계함수  (0) 2024.07.23