2009-06-17 53 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; }