2009-06-17 25 views
2

我有以下代碼:LINQ到SQL表列表到接口列表

public IQueryable<ITax> FindAllTaxes() 
{ 
     return db.Taxes; 
} 

我收到以下錯誤

Cannot implicitly convert type 'System.Data.Linq.Table<Models.Tax>' to 'System.Linq.IQueryable<Interfaces.ITax>' 

我試圖使用界面,不論我去,但不當然如何轉換,任何幫助?

+0

對於info - 在stackoverflow編輯器;如果您將代碼塊縮進4個空格(或點擊代碼圖標),它將正確渲染,包括所有重要的< >轉義。 – 2009-06-17 11:46:57

回答

4

我們沒有泛型類型的協方差然而,我害怕。你可以做IQueryable<Tax>,但不是IQueryable<ITax>。你可以引入一個轉換,但它可能會破壞組合性,使其無用。你可以試試它:

return db.Taxes.Cast<ITax>(); 

在C#4.0中,這可能會工作沒有額外的演員(雖然我沒有嘗試過)。

+0

令人驚訝的是,一個小格式可以改變問題的意義。我爲什麼IQueryable(非泛型)不能工作並且瞧不起,這是我的頭腦,這實際上是他以後的界面的一個通用。 – tvanfosson 2009-06-17 11:47:24

0

試試這個

 public IQueryable<Taxe> FindAllTaxes() { return db.Taxes; } 

 public IQueryable<Tax> FindAllTaxes() { return db.Taxes; }