LINQ

2009-06-17 6 views
2

私は次のコードを持っている:LINQ

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

を私は私が行くインターフェイスところ、これまで使用しようとしますが、いない午前、次のエラー

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

を取得していますこれをどのように変換するか、どのヘルプ?

+0

情報の場合 - stackoverflowエディタで、あなたがコードブロックを4つ分だけインデントする(またはコードアイコンを押す)と、それが正しくレンダリングされます。すべての重要なものを含めて、< >はエスケープします。 –

答えて

4

を試してみてください、私は怖いです。 IQueryable<Tax>はできますが、IQueryable<ITax>はできません。コンバージョンを導入することはできますが、おそらくコンポジット性が損なわれ、役に立たなくなります。あなたはしかし、それを試みることができる:C#4.0では

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

を(私はそれを試していないが)、これはおそらく、余分なキャストなしで動作します。

+0

ちょっとした書式が質問の意味を変えることができるのは驚くべきことです。私はIQueryable(非ジェネリック)がうまくいかない理由を頭で悩ましていました。本当に彼が後にしていたインターフェースの総称でした。 – tvanfosson

+0

私は同じものを持っていました - 私はどのように答えを書くのですか:IQueryable :IQueryableは、 "私は思っています..." ;-p –

0

我々はまだ一般的なタイプの共分散を持っていないこの

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

または

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