代码之家  ›  专栏  ›  技术社区  ›  recursive

是否可以将IQueryable<Derived>转换为IQueryable<Base>?

  •  2
  • recursive  · 技术社区  · 15 年前

    我知道协方差,并且我知道在v4.0之前,在C#中通常不可能实现协方差。

    然而,我想知道一个具体的案例。有什么方法可以让你改变吗 IQueryable<Derived> IQueryable<Base> .Where<>()

    我的用例是,我正在尝试处理一个具有许多类似表的数据库模式。大多数字段都是公共字段,需要在每个表上查询许多公共字段。我正在使用LinqToSql。我希望避免重复每个表的所有查询。

    2 回复  |  直到 15 年前
        1
  •  6
  •   jrista    15 年前

    以下是您想要的吗?

    var results = queryable.OfType<Base>.Where(...);
    

        2
  •  0
  •   Konamiman    15 年前

    var results = queryable.Select(derived => (Base)derived).Where(...);