这个问题主要是关于 LINQ 和可能的协方差。
我的两个实体实现了IDatedItem接口。我想联合,然后对这些进行排序,以枚举为一个列表。我必须在枚举时保留实体特定的属性。
为了举例说明,我尝试的一种方法是:
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 接口是实际共享属性的简化。
- 在实践中,表在联合之前被过滤。
- 特定于实体的属性将按顺序在网页中呈现。
- 在并行功能中,它们将被序列化为 JSON 结果层次结构。
- 我也希望能够对结果执行 LINQ 聚合操作。