C#/기타
[C#] IComparer 정렬 (클래스, 구조체 정렬)
스타크래프트 좋아하는 사람
2023. 10. 24. 22:31
클래스, 구조체 등 내부 값이 있는 경우에 IComparer<T> 를 이용하여 비교하여 정렬이 가능합니다.
using System;
using System.Collections.Generic;
namespace ConsoleApp
{
class Program
{
class DescCompare : IComparer<Data>
{
//작으면 -1, 같으면 0, 크면 1
//반대인 경우는 Asc 가능
public int Compare(Data data1, Data data2)
{
return data1.A < data2.A ? -1 : 1;
}
}
class Data
{
public int A { get; set; }
public string B { get; set; }
}
static void PrintList (List<Data> datas, string message)
{
Console.WriteLine(message);
foreach (Data data in datas)
{
Console.WriteLine(string.Format("{0}) {1}", data.A, data.B));
}
}
public static void Main(string[] args)
{
List<Data> datas = new List<Data>();
datas.Add(new Data { A = 30, B = "Test30" });
datas.Add(new Data { A = 20, B = "Test20" });
datas.Add(new Data { A = 10, B = "Test10" });
PrintList(datas, "정렬 전");
datas.Sort(new DescCompare());
PrintList(datas, "정렬 후");
}
}
}