Recientemente tuve que ordenar una columna de valores DateTime nulos seguido de DateTime descendente.

El caso de uso fue la inclusión de un historial de empleo, con los trabajadores más recientes en primer lugar.

La columna EndDate se utilizó para determinar el orden principal, esto plantea un problema con los trabajos actuales, ya que aún no tienen una fecha de finalización.

Afortunadamente lograr esto con Lambda (o LINQ) es muy sencillo.

El siguiente código utiliza simplemente DateTime.MaxValue si el DateTime actual es nulo:

var = sortedEmpleos Empleos.OrderByDescending (x => x.EndDate ?? DateTime.MaxValue);

Y ahí lo tienen, el conjunto de datos está ordenado por los nulos primero y luego por DateTime descendente.

Si quiere añadir más lógica para enriquecer aún más el tipo se podría simplemente añadir más lógica de clasificación … A continuación se incluye la adición de una especie secundaria en los trabajos de la fecha de inicio:

sortedEmpleos var = Empleo
    .OrderByDescending (X => x.EndDate ?? DateTime.MaxValue)
    .ThenByDescending (X => x.StartDate);

Lambda hace esto de una manera mucho más fácil de implementar.

(Visitado 156 veces, 1 visitas hoy)