この質問は主にLINQと共分散に関するものです。
私のエンティティのうち 2 つは、 IDatedItemインターフェイスを実装しています。単一のリストとして列挙するために、これらを結合して並べ替えたいと思います。列挙時にエンティティ固有のプロパティを保持する必要があります。
例で明確にするために、私が試した1つのアプローチは次のとおりです。
Context.Table1.Cast<IDatedItem>().
Union(Context.Table2.Cast<IDatedItem>()).
SortBy(i => i.Date).
ForEach(u => CustomRenderSelector(u, u is Table1));
これをさまざまな方法で実行しようとすると、さまざまなエラーが発生しました。
- LINQ to Entities は、EDM プリミティブ型または列挙型のキャストのみをサポートします。
- タイプ '.IDatedItem[]' を処理できません。値レイヤーへの既知のマッピングはありません
- タイプ 'IDatedItem' の定数値を作成できません。プリミティブ型のみ
- 等
全体像:
- ここに示す IDatedItem インターフェイスは、実際の共有プロパティを簡略化したものです。
- 実際には、テーブルはユニオンの前にフィルター処理されます。
- エンティティ固有のプロパティは、順番に Web ページにレンダリングされます。
- 並列機能では、JSON 結果階層にシリアル化されます。
- 結果に対してもLINQ集計操作を実行できるようにしたいと思います。