可能转换的IQueryable <派生>到的IQueryable <数据库>?
-
16-09-2019 - |
题
我知道协方差,并且我知道一般它不可能在C#,直到V4.0。
但是我想知道关于一个特定情况。有没有得到转换IQueryable<Derived>
通过某种方式创建一个包装类,实际上并不执行查询以IQueryable<Base>
的一些方法,但实际上可以“通过”一个.Where<>()
电话?
我使用的情况是,我试图解决,有许多类似的表的数据库架构。大多数字段都是常见的,许多常见的领域都需要对每个表进行查询。我使用LinqToSql。我希望,以避免重复的所有查询的每个表。
解决方案
时,你在找什么下面?
var results = queryable.OfType<Base>.Where(...);
在OfType方法将聚集起来任何是指定类型的,并且如果该集合中的所有项目是型基的任一,或从式碱衍生,它们应该出线。在随后的其中,所有的项目将是类型的碱。
其他提示
在下文中也将工作,但它是相当少:
var results = queryable.Select(derived => (Base)derived).Where(...);
不隶属于 StackOverflow