我知道协方差,并且我知道一般它不可能在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