質問

私は、共分散について知っている、と私は一般的に、それはC#でV4.0までは可能ではないだろうことを知っています。

しかし、私は、特定の場合について疑問に思って。何とか実際にクエリを実行しませんが、実際にIQueryable<Derived>コール「を通過する」ことができますラッパークラスを作成することにより、IQueryable<Base>する.Where<>()を変換取得するいくつかの方法がありますか?

私のユースケースは、私は多くの類似のテーブルを持つデータベーススキーマに対処しようとしていますということです。フィールドのほとんどは共通であり、共通のフィールドの多くは、各テーブルに照会する必要があります。私はLinqToSqlを使用しています。私は、各テーブルのすべてのクエリの重複を避けるために期待していた。

役に立ちましたか?

解決

あなたが探しているものを、次のされていますか。

var results = queryable.OfType<Base>.Where(...);

OfTypeメソッドは、指定された型であるものを集めるだろう、と、コレクション内のすべての項目は、型ベースのいずれかである、またはタイプのベースから派生した場合、彼らは資格をすべきです。以降ここでは、すべての項目は、型ベースであろう。

他のヒント

それはあまりきれいではあるが、

次のようにも、動作します。

var results = queryable.Select(derived => (Base)derived).Where(...);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top