Trier une liste par un champ en C#

Saad Aslam 12 octobre 2023
  1. Utilisez la méthode Sort() pour trier une liste par fichier en C#
  2. Utilisez la méthode OrderBy() pour trier une liste par fichier en C#
Trier une liste par un champ en C#

Cet article explique comment utiliser la fonction C# Sort() et le mot-clé OrderBy() de LINQ pour trier une liste dans l’ordre croissant et décroissant.

Premièrement, nous devons importer les bibliothèques nécessaires pour utiliser les fonctions qui en sont dérivées dans notre exemple.

using System;
using System.Linq;
using System.Collections.Generic;

Créez une classe appelée PersonData, et à l’intérieur de celle-ci, définissez une variable appelée name, avec le type de données string avec son constructeur et une méthode qui convertira une entrée en une valeur string et la retournera.

public class PersonData {
  public string name;

  public PersonData(string name) {
    this.name = name;
  }

  public override string ToString() {
    return name;
  }
}

Ensuite, nous déclarerons 5 variables avec le type de données PersonData et leur attribuerons des valeurs de chaîne.

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");

Pour implémenter le tri dans ces champs, nous devons créer une liste et insérer ces données dans la liste mergedList.

List<PersonData> mergedList = new List<PersonData>() { tom, roger, fred, jack, anna };

Utilisez la méthode Sort() pour trier une liste par fichier en C#

C’est la première façon de trier une liste par ordre croissant. Nous appellerons simplement ce nom de liste, défini dans le bloc de code supérieur avec la fonction Sort(), et passerons deux arguments en fonction desquels les valeurs seront comparées pour les trier par ordre croissant.

mergedList.Sort((x, y) => {
  int ret = String.Compare(x.name, y.name);
  return ret;
});

Exemple:

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));
  }
}

La sortie de la liste Avant le tri:

Tom
Roger
Fred
Jack
Anna

La sortie de la liste Après le tri:

Anna
Fred
Jack
Roger
Tom

Après avoir trié la liste par ordre croissant, vous pouvez simplement appeler la méthode Reverse() pour la trier par ordre décroissant :

mergedList.Reverse();

La sortie de la liste en ordre décroissant est la suivante :

Tom
Roger
Jack
Fred
Anna

Utilisez la méthode OrderBy() pour trier une liste par fichier en C#

Il s’agit de la méthode alternative pour trier une liste par ordre croissant. Nous appellerons simplement le nom de la liste créée dans le bloc de code précédent en utilisant la méthode OrderBy() et en donnant un argument par rapport auquel les valeurs seront vérifiées pour le trier par ordre croissant.

Syntaxe:

List<PersonData> sortedList = mergedList.OrderBy(x => x.name).ToList();

Exemple:

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));
  }
}

La sortie de la liste Avant le tri:

Tom
Roger
Fred
Jack
Anna

La sortie de la liste Après le tri:

Anna
Fred
Jack
Roger
Tom

Pour trier cette liste par ordre décroissant, il suffit d’appeler une fonction Reverse() après avoir trié la liste par ordre croissant comme suit :

List<PersonData> sortedList = mergedList.OrderBy(x => x.name).ToList();

sortedList.Reverse();

La sortie de la liste dans l’ordre décroissant est la suivante :

Tom
Roger
Jack
Fred
Anna
Auteur: 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

Article connexe - Csharp List