La función List.MaxN devuelve los mayores N elementos de una lista o los mayores elementos que satisfagan una cierta condición.
List.MaxN(
list as list,
countOrCondition as any,
optional comparisonCriteria as any,
optional includeNulls as nullable logical
) as list
- list: lista de la que extraer los mayores elementos
- countOrCondition: número de elementos a extraer o condición que deberán satisfacer para ser seleccionados
- comparisonCriteria: (opcional) criterio de comparación de los elementos de la lista
- includeNulls: (opcional) parámetro no documentado
La función comienza ordenando la lista de mayor a menor, aplicándose los filtros a esta lista ordenada.
Si el argumento countOrCondition es un valor numérico, se extraerá dicho número de elementos del comienzo de la lista ordenada. Si la lista no tiene tantos elementos como se haya indicado, se devuelve la lista completa.
Si se trata de una condición, la función extraerá los elementos del comienzo de la lista que la satisfagan hasta que encuentre el primero que no lo haga.
Si se especifica 0 como número de elementos a extraer, o si ningún elemento satisface la condición indicada, la función devuelve una lista vacía.
En el caso de que existan en la lista elementos de varios tipos el orden de precedencia es el siguiente:
- Fechas
- Números
- Textos (según su codificación unicode: "A" < "a", "aA" < "aa")
Los booleanos son tratados como números (False = 0, True = 1).
La función conserva el tipo de los valores devueltos.
Podemos extraer los tres mayores valores de la lista {2, 6, 1, 7, -2, 9} con la siguiente expresión:
List.MaxN(
{2, 6, 1, 7, -2, 9},
3
)
List
Un clic en el enlace List nos muestra la lista resultante:
Comprobamos que, tras ordenar la lista de mayor a menor, se han extraído los tres primeros elementos.
Si la lista no tiene tantos elementos como se haya especificado, se devuelve la lista completa:
List.MaxN(
{2, 6, 1, 7, -2, 9},
99
)
Vemos en la imagen anterior la lista ordenada.
Si el argumento countOrCondition es una condición, se extraerán los mayores valores que cumplan dicha condición del principio de la lista ordenada. En el siguiente ejemplo se extraen todos los valores del comienzo de la lista que sean mayores que 4:
List.MaxN(
{2, 6, 1, 7, -2, 9},
each _ > 4
)
Sin embargo, si imponemos como condición que los valores sean menores que 4, al aplicarse esta condición a la lista ordenada (que comienza con el valor 9), ningún valor la cumple, por lo que se devuelve una lista vacía:
List.MaxN(
{2, 6, 1, 7, -2, 9},
each _ < 4
)