Aufgaben sortieren nach Namen

Aufgaben sortieren

Während der Arbeit mit einem Projekt, das Aspose.Tasks verwendet, können die Aufgaben im Projekt von einem der Felder sortiert werden. In diesem Artikel wird angezeigt, wie die iComparable -Schnittstelle implementiert wird, um Aufgaben nach Namen zu sortieren.

Definieren Sie zunächst eine Klasse, die die ikonparelle Schnittstelle implementiert. Fahren Sie dann die Aufgaben im Projekt durch und sortieren Sie sie mit Namen.

Implementieren der iComparable -Schnittstelle

 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}
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.