C#에서 필드별로 목록 정렬

Saad Aslam 2023년10월12일
  1. Sort() 메서드를 사용하여 C#의 Filed별로 목록 정렬
  2. OrderBy() 메서드를 사용하여 C#의 Filed별로 목록 정렬
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
작가: Saad Aslam
Saad Aslam avatar Saad Aslam avatar

I'm a Flutter application developer with 1 year of professional experience in the field. I've created applications for both, android and iOS using AWS and Firebase, as the backend. I've written articles relating to the theoretical and problem-solving aspects of C, C++, and C#. I'm currently enrolled in an undergraduate program for Information Technology.

LinkedIn

관련 문장 - Csharp List