List (SortOrder function)
Create a composite SortOrder (SortOrder class)
This shared function is a virtual constructor, or factory method, for SortOrder objects. The List method invokes the creation of a new SortOrder instance, then populates that instance with items from an input list that are themselves SortOrder instances. Designed for specifying multiple sort criteria, the SortOrder objects in the object that List returns are applied consecutively by the sorting method that uses the SortOrder.
%sortOrder = [%(SortOrder For itemType):]List( sortOrderItems)
|%sortOrder||A SortOrder object variable to contain the new object instance.|
|[%(SortOrder For itemType)]||This optional specification of the class in parentheses denotes a virtual constructor. See "Usage notes", below, for more information about invoking a SortOrder virtual constructor.|
|sortOrderItems||A comma-delimited set of SortOrder objects, which may be explicitly specified Ascending/Descending functions, SortOrder object variables, or another SortOrder List specification. These individual SortOrder objects are applied to the target collection items in the order they are specified in this argument.
If a SortOrder like
- List is a virtual constructor and as such can be invoked with no method
object, with an explicit class specification, or with an object variable of the class,
even if that object is Null:
%sord = List(sortOrderItems) %sord = %(Sortorder for itemType):List(sortOrderItems) %sord = %sord:List(sortOrderItems)
Note: As shown in the second of these above, if you explicitly specify the class name, you must include the item datatype of the collection to be sorted, just as on a SortOrder object variable's declaration.
Where, for example:
%myorder = list(ascending(quantity), descending(price))
Since the arguments to the SortOrder List method are also SortOrder objects, you could
also pass the
%myorder variable in another List call.
The following List statement
%myorder criteria into the middle of two other sort criteria:
%mynewOrder = list(ascending(length), %myorder, descending(reverse))
You can even pass a List call within a List call:
%myorder = list(ascending(change), list(ascending(quantity), descending (price)))