2013-01-09 254 views
6

可能重複:
LINQ2SQL: Cannot convert IQueryable<> to IOrderedQueryable error無法隱式轉換類型 'System.Linq.IQueryable <>' 到 'System.Linq.IOrderedQueryable <>'

我具有在該錯誤我的控制器的搜索字符串..

這裏是我的代碼:

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

我在我的索引中使用此代碼進行搜索。 我在這裏或某處宣佈了什麼錯嗎?我已經嘗試了谷歌搜索,但沒有找到明確的答案。預先感謝任何可以幫助我的人..

+0

什麼是職位和你是怎麼聲明/使用它呢? – V4Vendetta

+1

此主題看起來類似:http://stackoverflow.com/questions/1732236/linq2sql-cannot-convert-iqueryable-to-iorderedqueryable-error什麼數據類型是帖子?它從哪裏來的?你在任何地方做任何排序(orderby)嗎? – JLRishe

回答

16

最可能的原因是您在OrderBy查詢中使用了隱含的var聲明posts。如果將其替換爲

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

錯誤應該消失。

+0

whoa ..是的,你是對的人..你的回答對我來說是完美的。它的工作..謝謝:) ..! – bot

0

帖子是IOrderedQueryable,並調用哪裏返回IQueeryable。你爲什麼不明確聲明變量,看看它是否解決了這個問題。

5

您的posts變量似乎是IOrderedQueryable<Post>類型,但您將其指定爲IQueryable<Post>。我看到2種方法來解決這個問題,要麼修改變量類型爲IQueryable<Post>或排序查詢是這樣的:

posts = posts.Where(post => post.Body == searchString) 
    .OrderBy(post => post.Date); 
相關問題