The collection.orderByMethod( ) method returns a new collection containing all elements of the collection in the order defined through the methodName method.
This method returns a shallow copy, which means that objects or collections in both collections share the same reference. If the original collection is a shared collection, the returned collection is also a shared collection.
Note: This method does not modify the original collection.
In methodName, pass a comparison method that compares two values and returns true in $1.result if the first value is lower than the second value. You can provide additional parameters to methodName if necessary.
- methodName will receive the following parameters:
- $1 (object), where:
- $1.value (any type): first element value to be compared
- $1.value2 (any type): second element value to be compared
- $2...$N (any type): extra parameters
- methodName sets the following parameter:
- $1.result (boolean): true if $1.value < $1.value2, false otherwise
You want to sort a collection of strings in numerical order rather than alphabetical order:
Here is the code for NumAscending:
$1.result:=Num($1.value)<Num($1.value2)
You want to sort a collection of strings on their length:
C_COLLECTION($fruits)
$fruits:=New collection("Orange";"Apple";"Grape";"pear";"Banana";"fig";"Blackberry";"Passion fruit")
$c2:=$fruits.orderByMethod("WordLength")
Here is the code for WordLength:
$1.result:=Length(String($1.value))>Length(String($1.value2))
You want to sort a collection by character code or language:
var $strings1;$strings2 : Collection
$strings1:=New collection("Alpha";"Charlie";"alpha";"bravo";"Bravo";"charlie")
$strings2:=$strings1.orderByMethod("sortCollection";sk character codes)
$strings2:=$string1s.orderByMethod("sortCollection";sk strict)
The sortCollection method:
var$1Object
var$2Integer
$1.result:=(Compare strings($1.value;$1.value2;$2)<0)