2012-03-13 9 views
22

Ok, quindi nel nostro progetto che sto usando la libreria System.Linq.Dynamic ma ho appena notato che non posso fare il folowing:System.Linq.Dynamic non supporta OrderByDescending ("someColumn")?

myDataSource.OrderByDescending ("someColumnName")

perché ricevo il seguente errore :

risoluzione di sovraccarico non è riuscita perché non OrderByDescending accessibile può essere chiamato con questi argomenti ...

sembra che la Biblioteca supportano solo OrderBy ("someColumnName"). C'è una ragione per questo e come ignorerei questo problema se voglio riordinare i record in ordine decrescente? Devo all'utente Reverse() ad esempio OrderBy ("someColumnName"). Reverse()? Sembra un hack ...

Qualsiasi consiglio sarebbe molto apprezzato ...

risposta

44

Supponendo che si sta utilizzando i file DynamicQuery Helper dalla libreria di esempio di Microsoft (che sono nello spazio dei nomi System.Linq.Dynamic) poi dopo aver letto il codice sorgente sembra che è necessario specificare l'ordine che si desidera nel modo seguente:

myDataSource.OrderBy("someColumnName descending") 
+0

Ho pensato che il metodo OrderByDescending non accetta solo 1 parametro stringa?! –

+0

Mi spiace - ho sbagliato a digitare la risposta. Il metodo OrderBy nell'helper DynamicQuery di Microsoft consente di specificare ordinamenti di stringhe separati da virgola come questo. –

+3

Sì, questa era la risposta che stavo cercando. Se potessi aggiungere, puoi dire semplicemente myDataSource.OrderBy ("someColumnName DESC") in altre parole non devi digitare l'intera parola discendente. – Marko

8

Se stai usando i valori di stringa (come me) si dovrà concatenare alla stringa come questo :

myDataSource.OrderBy(columnName + " descending"); 

Non dimenticare di aggiungere uno spazio prima di 'discendere' altrimenti si otterrà un errore.