2014-05-15 20 views
9

Ho ottenuto una tabella di prodotto e desidero ottenere i dati in ordine alfabetico. Ma quando scrivo questa query, vengono ancora da id. Controllo un sacco di pagine su google ma non riesco a trovare alcuna fonte.Linq Ordine alfabetico

var product = Db.tablename 
       .Where(s => s.colum == DropDownList2.SelectedValue) 
       .OrderBy(s=> s.Name); 
+1

dove si utilizza il risultato del prodotto? Voglio dire stai cercando di legare i tuoi dati a una griglia o ad un altro controllo? Potresti postare anche questo codice? Grazie ! – Christos

+0

Sì, invio il restul al datalist. – Seration

risposta

12

Questa query

var product = Db.tablename 
       .Where(s => s.colum == DropDownList2.SelectedValue) 
       .OrderBy(s=> s.Name); 

non viene eseguita fino a quando non viene chiesto di. Quindi devi cambiare per la seguente:

var product = Db.tablename 
       .Where(s => s.colum == DropDownList2.SelectedValue) 
       .OrderBy(s=> s.Name).ToList(); 

Il motivo per cui questo accade è che in realtà avete appena dichiarato una query. Voglio dire che non l'hai eseguito. Questa è la natura delle query LINQ, che in termini tecnici è chiamata esecuzione con deroga. D'altra parte se si chiama il metodo ToList() alla fine della query, si attiverà l'esecuzione immediata di questa query e il risultato sarà uno List dello stesso tipo con s.Name.

+0

È in corso l'errore System.Data.SqlClient.SqlException: I tipi di dati testo, ntext e immagine non possono essere confrontati o ordinati, ad eccezione di quando si utilizza l'operatore IS NULL o LIKE – Seration

+1

, modificare il tipo su nvarchar nel proprio database. Ciò non influirà sui tuoi dati e risolverà il tuo problema. Non sapevo nulla di questo errore, ma avendo fatto un po 'di ricerca su google ho trovato questo http://forums.asp.net/t/1481629.aspx?Help+Again, che afferma il suggerimento di cui sopra. – Christos

+0

Il tipo Colom era testo lo ho modificato varchar max e aggiunto ToList(). Funziona benissimo :) Grazie mille – Seration

1

È necessario utilizzare ToList per eseguire l'ordinamento.

var product = Db.tablename 
       .Where(s => s.colum == DropDownList2.SelectedValue) 
       .OrderBy(s=> s.Name).ToList(); 

L'ordine da non fa nulla, solo esegue la query, il ToList farà il tipo per la query originale.

+0

È stato riscontrato questo errore System.Data.SqlClient.SqlException: i tipi di dati text, ntext e image non possono essere confrontati o ordinati, tranne quando si utilizza l'operatore IS NULL o LIKE. – Seration

+0

Quale versione di Sql stai usando? Esistono alcune limitazioni per le versioni precedenti di SQL che possono causare questo errore – Fals

+0

Società host che utilizza Mssql2012:/ – Seration

Problemi correlati