我了解协方差,并且我知道一般来说,在 v4.0 之前,它在 C# 中是不可能的。
不过我想知道一个具体案例。有什么方法可以进行转换IQueryable<Derived>
to IQueryable<Base>
通过以某种方式创建一个包装类,该类实际上并不执行查询,但实际上可以“传递”.Where<>()
call?
我的用例是我正在尝试处理具有许多相似表的数据库模式。大多数字段是公共的,很多公共字段需要在每个表上查询。我正在使用 LinqToSql。我希望避免重复每个表的所有查询。
以下是您正在寻找的吗?
var results = queryable.OfType<Base>.Where(...);
OfType 方法将收集指定类型的所有内容,如果集合中的所有项目都是 Base 类型或派生自 Base 类型,则它们应该符合条件。在接下来的地方,所有项目都是 Base 类型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)