Сортировка задач по имени
Contents
[
Hide
Show
]Сортировка задач
Работая с проектом с использованием aspose.tasks, задачи в проекте могут быть отсортированы по любой из областей. В этой статье показано, как реализовать Icomplable Interface для сортировки задач по имени.
Во -первых, определите класс, который реализует Icomplable Interface. Затем пройдите задачи в проекте и сортируйте их по имени.
Реализация Icomplable Interface
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}