Ressourcen nach Namen sortieren
Contents
[
Hide
Show
]Ressourcen sortieren
Bei der Arbeit mit einem Projekt, das Aspose.Tasks verwendet, können Projektressourcen nach einem der Felder sortiert werden. In diesem Artikel wird angezeigt, wie die iComparable -Schnittstelle zur Sortierung von Ressourcen nach Namen implementiert wird. Um dies zu erreichen, definieren Sie zunächst eine Klasse, die die IComparable -Schnittstelle wie unten gezeigt implementiert. Fahren Sie dann die Ressourcen im Projekt durch und sortieren Sie sie nach Namen.
Implementieren der iComparable -Schnittstelle
1int32_t SortResourcesByName::RscNameComparer::Compare(System::SharedPtr<Resource> const &x, System::SharedPtr<Resource> const &y) ASPOSE_CONST
2{
3 if (System::String::IsNullOrEmpty(x->Get<System::String>(Rsc::Name())))
4 {
5 return 1;
6 }
7 if (System::String::IsNullOrEmpty(y->Get<System::String>(Rsc::Name())))
8 {
9 return -1;
10 }
11 return x->Get<System::String>(Rsc::Name()).CompareTo(y->Get<System::String>(Rsc::Name()));
12}
Sorting Resources by Name
1System::SharedPtr<Project> project = System::MakeObject<Project>(dataDir + u"project-sort.mpp");
2
3System::SharedPtr<System::Collections::Generic::List<System::SharedPtr<Resource>>> resources = project->get_Resources()->ToList();
4resources->Sort(System::MakeObject<SortResourcesByName::RscNameComparer>());
5
6
7{
8 auto rsc_enumerator = (resources)->GetEnumerator();
9 decltype(rsc_enumerator->get_Current()) rsc;
10 while (rsc_enumerator->MoveNext() && (rsc = rsc_enumerator->get_Current(), true))
11 {
12 System::Console::WriteLine(rsc);
13 }
14}