2016-11-09 27 views
0

我創建了一個實體框架API控制器,現在我想從調整我的GetData()方法:不能鍵入「System.Data.Entity.Infrastructure.DbSqlQuery」隱式轉換爲「System.Linq.IQueryable」

public IQueryable<VIPPreviewTimeSlots> GetData() 
{ 
    return db.Data; 
} 

public IQueryable<VIPPreviewTimeSlots> GetData() 
{ 
    return db.Data.SqlQuery("SELECT a,b,c FROM table INNER JOIN another table...."); 
} 

,但我得到這個錯誤:

Cannot implicitly convert type 'System.Data.Entity.Infrastructure.DbSqlQuery’ to 'System.Linq.IQueryable’ 

如何施放此爲IQueryab樂?

+0

我想通過添加.AsQueryable()到您的返回語句的結尾將工作。但是,根據[這個SO問題](http://stackoverflow.com/questions/26143571/using-sqlquery-to-get-iqueryable),你不能。您可以更改函數簽名以返回IEnumerable –

+0

.AsQueryable()工作! – user979331

+0

@PaulStoner那麼這個答案就是關於在'.SqlQuery'上調用'.AsQueryable'。將函數簽名更改爲IEnumerable將導致它不再能夠延遲鏈接。之後的一切都將在客戶端完成,而不是在服務器端完成。 '.AsQueryable'在這裏是正確的答案(它實際上也會是你的鏈接問題的正確答案,但它可能會影響'.SqlQuery',在這裏它不會。 –

回答

1

嘗試使用AsQuearable()。但正如我在評論中指出的那樣,這可能會產生影響。

相關問題