タスクを名前で並べ替えます
Contents
[
Hide
Show
]ソートタスク
Aspose.Tasksを使用してプロジェクトを操作している間、プロジェクトのタスクはどのフィールドでもソートできます。この記事では、名前でタスクを並べ替えるためにicomparableインターフェイスを実装する方法を示します。
まず、[象徴的なインターフェイスを実装する]クラスを定義します(1)。次に、プロジェクトのタスクを横断し、 名前で並べ替え。
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}