を照会可能となるように、私はしかし、私はSecondClass
がほぼ同じ公開しFirstClass
のラッパークラスですIQueryable<SecondClass>
を、公開したいIQueryable<FirstClass>
データソースを使用して、クラス/ APIを持っていますしかし、さまざまな理由から、無関係な基底クラスから継承する必要があります。たとえば:「選択」または「ラッピング」のIQueryableそれはまだ
// My API
void IQueryable<SecondClass> GetCurrentRecords()
{
return from row in dataSource
/* Linq query */
select new SecondClass(row);
}
// User of my API
var results = GetCurrentRecords().Where(row => row.Owner = "Mike");
は今、私は単に私が効率的にAPIユーザーのクエリに基づいてデータベースを照会することIQueryable
「true」を公開するしかしAsQueryable
を使用することにより、上記のコンパイルを行うことができます。
私は(私のラッパーのIQueryableの実装はSecondClass
とFirstClass
の性質との関係を理解する必要があります)、これは簡単ではないことを知っている、そしてそれはSelect
機能とは何の関係もないことを、それはそれのようです可能でなければならない。
どうすればよいですか?
注:私の代わりに私のAPIは単なるAPIのユーザーは、そのクエリを作成「完了」したときのためにSecondClass
にFirstClass
を変換するためのヘルパーメソッドと一緒にFirstClass
を公開することができることを知っているが、それは汚い感じていると私はしないでください私の生成クラスをこのように公開する考え方のように。また、私は純粋に学術的な観点から上記のことをどうやって行うのか知っていたいと思います。
この質問はあなたが含まれていないコードなしで意味がありません。 L2Eはすでに 'ObjectQuery'に対してこれを行います。あなた自身のコード( 'dataSource'を生成していないかもしれませんが、あなたはそれを示していません) –
@Craig私はそれに従わないのですか?' dataSource'は 'ObjectQuery – Justin
'dataSource'が' ObjectQuery 'の場合、L2Eはパラメータ化されたコンストラクタをサポートしていないため、クエリは実行時に失敗します。すでに「IQueryable 」を返し、SQLのサポートでさらなる構成をサポートしている「LINQ to Entities projections」(http://blogs.teamb.com/craigstuntz/2009/12/31/38500/)が「magic」です。 –