2011-01-11 17 views
11

Voglio ottenere una lista che ordine per tre proprietà che da priorità èCome posso gestire più criteri OrderByDescending?

  1. TODATE
  2. Numero
  3. RunDate

il mio codice è qui

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

Ma il risultato non è corretto.

Ad esempio, quando MyList contiene due elementi: e1, e2 ed e1.ToDate> e2.ToDate, il risultato è e2.

Quale proprietà dovrebbe venire prima? La proprietà con la priorità più alta (ToDate) o quella più bassa (RunDate)?

+0

Questo non ha nulla a che fare con Fluent Nhibernate: è puramente LINQ. Ho modificato i tag - suggerisco di (o qualcun altro che ha una rappresentante sufficiente) modificare anche il titolo. –

risposta

21

ho il sospetto che si vuole veramente:

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

ThenBy e ThenByDescending vengono utilizzati per specificare ordinamenti secondari dopo aver fornito una primaria utilizzando OrderBy o OrderByDescending.

Problemi correlati