HOWTO · Csharp
C#에서 필드별로 목록 정렬
이 기사에서는 C#에서 필드별로 목록을 정렬하는 방법을 설명합니다.
이 페이지의 내용
이 기사에서는 C# Sort() 함수와 LINQ의 OrderBy() 키워드를 사용하여 목록을 오름차순 및 내림차순으로 정렬하는 방법을 소개합니다.
먼저 이 예제에서 파생된 기능을 사용하기 위해 필요한 라이브러리를 가져와야 합니다.
using System;
using System.Linq;
using System.Collections.Generic;
PersonData라는 클래스를 만들고 그 안에 데이터 유형 문자열과 해당 생성자와 입력을 문자열 값으로 변환하고 반환하는 메서드를 사용하여 name이라는 변수를 정의합니다.
public class PersonData {
public string name;
public PersonData(string name) {
this.name = name;
}
public override string ToString() {
return name;
}
}
그런 다음 PersonData 데이터 유형으로 5개의 변수를 선언하고 일부 문자열 값을 할당합니다.
PersonData tom = new PersonData("Tom");
PersonData roger = new PersonData("Roger");
PersonData fred = new PersonData("Fred");
PersonData jack = new PersonData("Jack");
PersonData anna = new PersonData("Anna");
이 필드에서 정렬을 구현하려면 목록을 만들고 이 데이터를 mergedList 목록에 삽입해야 합니다.
List<PersonData> mergedList = new List<PersonData>() { tom, roger, fred, jack, anna };
Sort() 메서드를 사용하여 C#의 Filed별로 목록 정렬
이것은 목록을 오름차순으로 정렬하는 첫 번째 방법입니다. 위 코드 블록에 Sort() 함수로 정의된 목록 이름을 간단히 호출하고 값을 비교하여 오름차순으로 정렬할 두 개의 인수를 전달합니다.
mergedList.Sort((x, y) => {
int ret = String.Compare(x.name, y.name);
return ret;
});
예시:
using System;
using System.Linq;
using System.Collections.Generic;
public class PersonData {
public string name;
public PersonData(string name) {
this.name = name;
}
public override string ToString() {
return name;
}
}
public class SortList {
public static void Main() {
PersonData tom = new PersonData("Tom");
PersonData roger = new PersonData("Roger");
PersonData fred = new PersonData("Fred");
PersonData jack = new PersonData("Jack");
PersonData anna = new PersonData("Anna");
List<PersonData> mergedList = new List<PersonData>() { tom, roger, fred, jack, anna };
mergedList.Sort((x, y) => {
int ret = String.Compare(x.name, y.name);
return ret;
});
Console.WriteLine(String.Join(Environment.NewLine, mergedList));
}
}
정렬 전 목록의 출력:
Tom
Roger
Fred
Jack
Anna
정렬 후 목록의 출력:
Anna
Fred
Jack
Roger
Tom
목록을 오름차순으로 정렬한 후에는 ‘Reverse()’ 메서드를 호출하여 내림차순으로 정렬할 수 있습니다.
mergedList.Reverse();
내림차순의 목록 출력은 다음과 같습니다.
Tom
Roger
Jack
Fred
Anna
OrderBy() 메서드를 사용하여 C#의 Filed별로 목록 정렬
이것은 목록을 오름차순으로 정렬하는 대체 방법입니다. OrderBy() 메서드를 사용하고 값을 검사하여 오름차순으로 정렬할 인수를 지정하여 이전 코드 블록에서 생성된 목록 이름을 호출합니다.
통사론:
List<PersonData> sortedList = mergedList.OrderBy(x => x.name).ToList();
예시:
using System;
using System.Linq;
using System.Collections.Generic;
public class PersonData {
public string name;
public PersonData(string name) {
this.name = name;
}
public override string ToString() {
return name;
}
}
public class SortList {
public static void Main() {
PersonData tom = new PersonData("Tom");
PersonData roger = new PersonData("Roger");
PersonData fred = new PersonData("Fred");
PersonData jack = new PersonData("Jack");
PersonData anna = new PersonData("Anna");
List<PersonData> mergedList = new List<PersonData>() { tom, roger, fred, jack, anna };
List<PersonData> sortedList = mergedList.OrderBy(x => x.name).ToList();
Console.WriteLine(String.Join(Environment.NewLine, sortedList));
}
}
정렬 전 목록의 출력:
Tom
Roger
Fred
Jack
Anna
정렬 후 목록의 출력:
Anna
Fred
Jack
Roger
Tom
이 목록을 내림차순으로 정렬하려면 다음과 같이 목록을 오름차순으로 정렬한 후 Reverse() 함수를 호출하면 됩니다.
List<PersonData> sortedList = mergedList.OrderBy(x => x.name).ToList();
sortedList.Reverse();
내림차순의 목록 출력은 다음과 같습니다.
Tom
Roger
Jack
Fred
Anna