2011-01-11 13 views
11

quiero obtener una lista ese orden por tres propiedades que por prioridad es¿Cómo puedo gestionar varios criterios OrderByDescending?

  1. ToDate
  2. Número
  3. RunDate

Mi código es aquí

MyList 
    .OrderByDescending(p => p.ToDate) 
    .OrderByDescending(p => p.Number) 
    .OrderByDescending(p => p.RunDate) 
    .FirstOrDefault(); 

Pero el resultado es incorrecto

Por ejemplo, cuando MyList contiene dos elementos: e1, e2 y e1.ToDate> e2.ToDate, el resultado es e2.

¿Qué propiedad debe ser lo primero? La propiedad con la prioridad más alta (ToDate) o la más baja (RunDate)?

+0

Esto no tiene nada que ver con Fluent Nhibernate, es puramente LINQ. He editado las etiquetas: sugiero que usted (u otra persona que tenga suficiente representante) edite el título también. –

Respuesta

21

sospecho que realmente quiere:

MyList 
.OrderByDescending(p => p.ToDate) 
.ThenByDescending(p => p.Number) 
.ThenByDescending(p => p.RunDate) 
.FirstOrDefault(); 

ThenByThenByDescending y se utilizan para especificar los ordenamientos secundarios después de que haya proporcionado uno primario utilizando OrderBy o OrderByDescending.

Cuestiones relacionadas