클래스, 구조체 등 내부 값이 있는 경우에 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, "정렬 후");
}
}
}
'C# > 문법' 카테고리의 다른 글
[C#] Visual Studio 스크롤 시 화면 깨짐 (옵션 설정) (0) | 2024.02.10 |
---|---|
[C#] 출력 형식 ToString("C D N F E X") (+2진수 8진수 16진수) (0) | 2022.10.10 |
[C#] 인덱서 Indexer (0) | 2022.07.11 |
[C#] Serialization.Formatters.Binary (오브젝트 저장, 불러오기) (0) | 2022.05.07 |
[C#] ? : Nullable Type (0) | 2022.04.24 |