Trier les tâches par son nom

Lorsque vous travaillez avec des données de projet à l’aide d’Aspose.Tasks pour .NET, il est souvent nécessaire d’organiser des tâches dans un ordre spécifique pour l’analyse ou l’affichage. Une approche commune consiste à trier les tâches par ordre alphabétique par leurs noms. Ce guide explique comment procéder en implémentant un comparateur personnalisé.

Implémentation d’un comparateur personnalisé

Pour trier les tâches par son nom, définissez une classe qui implémente l’interface iCompparer <Task>. Ce comparateur vérifie les noms nuls ou vides, puis applique une comparaison de chaînes:

 1private class TaskNameComparer : IComparer<Task>
 2{
 3    public int Compare(Task x, Task y)
 4    {
 5        if (string.IsNullOrEmpty(x.Get(Tsk.Name)))
 6            return 1;
 7        if (string.IsNullOrEmpty(y.Get(Tsk.Name)))
 8            return -1;
 9        return x.Get(Tsk.Name).CompareTo(y.Get(Tsk.Name));
10    }
11}

This logic ensures tasks without names are placed at the end of the list.

Collecting and Sorting Tasks

Load a project and collect its tasks using ChildTasksCollector. Then apply the custom comparer to sort them:

 1Project project = new Project("New Project.mpp");
 2ChildTasksCollector coll = new ChildTasksCollector();
 3TaskUtils.Apply(project.RootTask, coll, 0);
 4List<Task> tasks = coll.Tasks;
 5
 6tasks.Sort(new TaskNameComparer());
 7
 8foreach (Task task in tasks)
 9{
10    Console.WriteLine(task);
11}

Le « ChildTasksCollector » permet d’aplatir la hiérarchie des tâches sous forme de liste, facilitant ainsi leur utilisation. Après le tri, les tâches apparaissent par ordre alphabétique, selon leur nom.

Résumé

Trier les tâches par nom simplifie la création de rapports, le filtrage et le rendu de l’interface utilisateur. Grâce à un comparateur personnalisé simple et aux utilitaires de collecte de tâches d’Aspose.Tasks, ce processus est facile à intégrer aux workflows .NET.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.