반응형
C#에서 구조체 목록을 정렬하려면 List<T>.Sort() 메서드를 사용하고 람다 식 또는 별도의 메서드를 사용하여 사용자 지정 비교 함수를 제공할 수 있습니다.
다음은 Name 및 Age 필드가 있는 간단한 Person 구조체를 사용하는 예입니다.
public struct Person
{
public string Name;
public int Age;
}
// create a list of persons
List<Person> persons = new List<Person>
{
new Person { Name = "Alice", Age = 25 },
new Person { Name = "Bob", Age = 20 },
new Person { Name = "Charlie", Age = 30 }
};
// sort the list by age
persons.Sort((p1, p2) => p1.Age.CompareTo(p2.Age));
// or sort the list by name
persons.Sort((p1, p2) => p1.Name.CompareTo(p2.Name));
위의 예에서 Sort() 메서드는 각각 Age 또는 Name 필드를 기준으로 두 Person 인스턴스를 비교하는 비교 함수를 사용합니다. 람다 식 p1 => p1.Age.CompareTo(p2.Age) 또는 p1 => p1.Name.CompareTo(p2.Name)은 비교 함수를 정의하는 데 사용됩니다.
또는 두 개의 Person 인스턴스를 인수로 사용하고 상대적 순서를 나타내는 정수 값을 반환하는 별도의 메서드를 정의할 수 있습니다. 예를 들어:
public static int CompareByAge(Person p1, Person p2)
{
return p1.Age.CompareTo(p2.Age);
}
// sort the list by age using the CompareByAge method
persons.Sort(CompareByAge);
그러면 Sort() 메소드는 CompareByAge() 메소드를 사용하여 목록의 Person 인스턴스를 비교합니다.
반응형
'[====== Development ======] > C#' 카테고리의 다른 글
C# JSON Array 읽는 방법 (0) | 2023.03.28 |
---|---|
C# 리스트를 포함한 Json 만들기 (0) | 2023.03.28 |
C# Enum 타입을 리스트로 만드는 방법 (0) | 2023.03.16 |
C# Tesseract를 이용한 OCR 검출 샘플 코드 (0) | 2023.03.14 |
WPF - Canvas를 이용한 도형 이동 및 크기고 (0) | 2023.03.10 |