이름으로 작업을 정렬합니다
Contents
[
Hide
Show
]정렬 작업
Aspose.Tasks를 사용하여 프로젝트를 사용하는 동안 프로젝트의 작업은 모든 필드에 의해 정렬 될 수 있습니다. 이 기사에서는 ICompayable 인터페이스를 구현하여 작업을 이름별로 정렬하는 방법을 보여줍니다.
먼저, [Icompayable 인터페이스를 구현하는] 클래스를 정의하십시오 (1). 그런 다음 프로젝트의 작업을 가로 지르고 이름별로 분류.
icomparyable 인터페이스 구현
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}