Worksheet.Sort(CellRange, IEnumerable<SortFieldBase>) Method
Sorts the specified range by multiple columns.
Namespace: DevExpress.Spreadsheet
Assembly: DevExpress.Spreadsheet.v24.1.Core.dll
NuGet Package: DevExpress.Spreadsheet.Core
Declaration
Parameters
Name | Type | Description |
---|---|---|
range | CellRange | The range of cells in a worksheet. |
sortFields | IEnumerable<SortFieldBase> | A list of |
Remarks
To sort by multiple columns, perform the following steps.
- Create the SortFieldBase object for each of the columns from which to sort. Specify the position of this column within the range using the SortFieldBase.ColumnOffset property and assign a comparer using the SortField.Comparer property. Instead of implementing your comparer with the IComparer<T><CellValue,> interface, you can use one of the built-in comparers that are responsible for sort operations performed by users. There are two built-in comparers:
Worksheet.Comparers.Ascending
used for sorting in ascending order, andWorksheet.Comparers.Descending
used for sorting in descending order. - Create a list containing sort fields.
- Use the Worksheet.Sort method with two parameters: the CellRange to sort, and the list of sort fields.
workbook.LoadDocument("Documents\\Sortsample.xlsx");
Worksheet worksheet = workbook.Worksheets[0];
// Create sorting fields.
List<SortFieldBase> fields = new List<SortFieldBase>();
// First sorting field. First column (offset = 0) will be sorted using ascending order.
SortField sortField1 = new SortField();
sortField1.ColumnOffset = 0;
sortField1.Comparer = worksheet.Comparers.Ascending;
fields.Add(sortField1);
// Second sorting field. Second column (offset = 1) will be sorted using ascending order.
SortField sortField2 = new SortField();
sortField2.ColumnOffset = 1;
sortField2.Comparer = worksheet.Comparers.Ascending;
fields.Add(sortField2);
// Sort the range by sorting fields.
CellRange range = worksheet.Range["A3:F22"];
worksheet.Sort(range, fields);
See Also