Trier les tâches par son nom
Contents
[
Hide
Show
]Tri des tâches
Tout en travaillant avec un projet utilisant Aspose.Tasks, les tâches du projet peuvent être triées par l’un des champs. Cet article montre comment implémenter l’interface icomparable pour trier les tâches par leur nom.
Tout d’abord, définissez une classe qui met en œuvre l’interface icomparable. Ensuite, traversez les tâches du projet et triez-les par nom.
Implémentation de l’interface icomparable
1int32_t SortTasksByName::TaskNameComparer::Compare(System::SharedPtr<Task> const &x, System::SharedPtr<Task> const &y) ASPOSE_CONST
2{
3 if (System::String::IsNullOrEmpty(x->Get(Tsk::Name())))
4 {
5 return 1;
6 }
7 if (System::String::IsNullOrEmpty(y->Get(Tsk::Name())))
8 {
9 return -1;
10 }
11 return x->Get(Tsk::Name()).CompareTo(y->Get(Tsk::Name()));
12}
Sorting Tasks by Name
1System::String dataDir = RunExamples::GetDataDir(System::Reflection::MethodBase::GetCurrentMethod(ASPOSE_CURRENT_FUNCTION)->get_DeclaringType().get_FullName());
2System::SharedPtr<Project> project = System::MakeObject<Project>(dataDir + u"project-sort.mpp");
3System::SharedPtr<ChildTasksCollector> coll = System::MakeObject<ChildTasksCollector>();
4TaskUtils::Apply(project->get_RootTask(), coll, 0);
5System::SharedPtr<System::Collections::Generic::List<System::SharedPtr<Task>>> tasks = coll->get_Tasks();
6
7tasks->Sort(System::MakeObject<SortTasksByName::TaskNameComparer>());
8
9
10{
11 auto task_enumerator = (tasks)->GetEnumerator();
12 decltype(task_enumerator->get_Current()) task;
13 while (task_enumerator->MoveNext() && (task = task_enumerator->get_Current(), true))
14 {
15 System::Console::WriteLine(task);
16 }
17}