반응형
다음과 같은 문제를 생각해 보겠습니다.
10명의 사람 정보에는 이름과 나이가 있습니다.
일반적인 배열을 사용한다고 가정해 보면 다음과 같이 정의할 수 있습니다.
이름은 문자열(string)이고, 나이는 정수(int) 형식입니다.
이 데이터를 배열을 이용해서 나이순으로 정렬해서 출력하는 것을 생각해 보십시오.
C# 에서 제공하는 Array.Sort() 메서드를 사용할 수 없습니다. 아마 버블 정렬(bubble sort) 또는 선택 정렬(selection sort) 등의 알고리즘으로 복잡하게 표현을 해야 할 수 있습니다.
이 경우는 struct로 이름과 나이를 한 개의 자료형으로 묶고, Linq를 이용해서 쉽게 표현할 수 있습니다.
사람(Person)을 표현하는 구조체를 다음과 같이 선언합니다.
internal struct Person // 구조체
{
public string Name; // 이름
public int Age; // 나이
public Person(string name, int age)
{
Name = name;
Age = age;
}
}
위에서 선언한 구조체를 이용해서 10명의 사람을 생성하고, Linq를 이용해서 나이순으로 정렬하는 코드는 다음과 같습니다.
private void button1_Click(object sender, EventArgs e)
{
List<Person> list = new List<Person>();
list.Add(new Person("이순신", 32));
list.Add(new Person("홍길동", 42));
list.Add(new Person("왕건", 33));
list.Add(new Person("설현", 27));
list.Add(new Person("정철수", 40));
list.Add(new Person("유치원", 7));
list.Add(new Person("강수지", 25));
list.Add(new Person("이만원", 19));
list.Add(new Person("한빛나라", 20));
list.Add(new Person("안나경", 23));
var result = from p in list
orderby p.Age // 나이를 오름차순으로 정렬
select p;
foreach (Person r in result)
{
listBox1.Items.Add(r.Name + "\t" + r.Age);
}
}
반응형
'C#' 카테고리의 다른 글
(C#) DBConn.cs 클래스 이용: 뷰(view)를 데이터그리드뷰에 출력하기 (2) | 2023.05.07 |
---|---|
(C#) 인쇄: 인쇄 미리보기 - PrintPreviewDialog ... (0) | 2023.04.24 |
(C#) WebBrowser: 웹 브라우저 만들기 (0) | 2023.04.23 |
(C#) 웹 크롤링: 웹사이트 긁어오기 (0) | 2023.04.23 |
(C#) 네트워크 프로그램, 1:1 채팅 프로그램 (0) | 2023.04.23 |