SaveOptionsTasksComparer Property

Gets or sets the comparer to sort tasks on Gantt chart and Task Sheet chart.

Namespace:  Aspose.Tasks.Saving
Assembly:  Aspose.Tasks (in Aspose.Tasks.dll) Version: 20.5
Syntax
public IComparer<Task> TasksComparer { get; set; }

Property Value

Type: IComparerTask
Examples
Shows how to set a comparer to sort tasks on Gantt chart and/or Task Sheet chart.
internal class SortTasksByColumnInGanttChart
{
    public void SortTasksByColumnInGanttChartExample()
    {
        var project = new Project(DataDir + "Project2.mpp");
        SaveOptions options = new PdfSaveOptions
        {
            Timescale = Timescale.Months,
            TasksComparer = new TasksNameComparer()
        };
        project.Save(OutDir + "SortedByNames_out.pdf", options);

        options.TasksComparer = new TasksDurationComparer();
        project.Save(OutDir + "SortedByDurations_out.pdf", options);
    }

    private class TasksNameComparer : IComparer<Task>
    {
        public int Compare(Task x, Task y)
        {
            // ReSharper disable once ConvertIfStatementToSwitchStatement
            // ReSharper disable once ConvertIfStatementToSwitchExpression
            if (x == null && y == null)
            {
                return 0;
            }

            if (x == null)
            {
                return -1;
            }

            return y == null ? 1 : string.Compare(x.Get(Tsk.Name), y.Get(Tsk.Name), StringComparison.Ordinal);
        }
    }

    private class TasksDurationComparer : IComparer<Task>
    {
        public int Compare(Task x, Task y)
        {
            // ReSharper disable once ConvertIfStatementToSwitchStatement
            if (x == null && y == null)
            {
                return 0;
            }

            if (x == null)
            {
                return -1;
            }

            if (y == null)
            {
                return 1;
            }

            var durX = x.Get(Tsk.Duration);
            var durY = y.Get(Tsk.Duration);
            return durX.TimeSpan.CompareTo(durY.TimeSpan);
        }
    }
}
See Also