반응형

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 인스턴스를 비교합니다.

반응형

+ Recent posts