private int[] DoSort(int columnIndex, bool descending)
{
if ((columnIndex < 0) || (columnIndex >= this.Columns.Count))
{
throw new ArgumentOutOfRangeException("columnIndex");
}
IResultNodeComparer comparer = ((this._options & MmcListViewOptions.UseCustomSorting) == MmcListViewOptions.None) ? new DefaultComparer() : this._sorter;
if (comparer == null)
{
throw new InvalidOperationException(Microsoft.ManagementConsole.Internal.Utility.LoadResourceString(Microsoft.ManagementConsole.Internal.Strings.ListViewDoSortNoComparer));
}
comparer.SetColumnIndex(columnIndex);
ResultNode[] array = this.ResultNodes.ToArray();
this._states |= ListViewStates.SortingInProgress;
Array.Sort(array, comparer);
this._states &= ~ListViewStates.SortingInProgress;
int[] numArray = new int[array.Length];
for (int i = 0; i < array.Length; i++)
{
numArray[i] = array[i].Id;
}
if (descending)
{
Array.Reverse(array);
}
this.ResultNodes.Replace(array);
return numArray;
}