2013-01-09 9 views
6

Eventuali duplicati:
LINQ2SQL: Cannot convert IQueryable<> to IOrderedQueryable errorImpossibile convertire implicitamente il tipo 'System.Linq.IQueryable <>' a 'System.Linq.IOrderedQueryable <>'

ho avere questo errore nel searchString del mio controller ..

ecco i miei codici:

if (!String.IsNullOrEmpty(searchString)) 
{ 
    posts = posts.Where(post => post.Body == searchString); 
} 

Sto usando questi codici per la mia ricerca nel mio indice. Ho dichiarato qualcosa di sbagliato qui o qualcosa del genere? Ho già provato su google, ma non ho trovato una risposta chiara. Grazie in anticipo per chi potrebbe aiutarmi ..

+0

Qual è post e come hai dichiara/usarlo? – V4Vendetta

+1

Questo thread ha un aspetto simile: http://stackoverflow.com/questions/1732236/linq2sql-cannot-convert-iqueryable-to-iorderedqueryable-error Che tipo di dati è post? Da dove proviene? Stai facendo qualche sorting (orderby) su di esso da qualche parte? – JLRishe

risposta

16

La causa più probabile è che è stata utilizzata una dichiarazione implicita var per posts in una query che ha un OrderBy. Se lo sostituisci con

IQueryable<Post> posts = someSource.Where(cond).OrderBy(/*the culprit*/); 

l'errore dovrebbe andare via.

+0

whoa .. Sì, sei proprio un tipo .. La tua risposta funziona perfettamente per me. Funziona .. Grazie :) .. !! – bot

0

post è IOrderedQueryable e la chiamata a dove viene restituito un IQueeryable. Perché non dichiari esplicitamente la variabile e vedi se risolve il problema.

5

La variabile posts sembra essere di tipo IOrderedQueryable<Post> ma si assegna a IQueryable<Post>. Vedo 2 modi per risolvere questo, o modificare il tipo di variabile per essere IQueryable<Post> o ordinare la query come questa:

posts = posts.Where(post => post.Body == searchString) 
    .OrderBy(post => post.Date); 
Problemi correlati