将IQueryable <t>转换为IQueryable <y> </y> </t>

时间:2012-04-16 14:38:36

标签: linq entity-framework iqueryable

我试着这样做:我首先使用EF代码来映射旧的现有数据库。有许多字段的类型错误(例如:char(1)用作布尔值)所以我为我的数据库上下文创建了一个完美映射到数据库表的包装类。现在,我想在我的存储库中公开我的实体类型的IQueryable。看我的例子:

public class MyContext:DbContext
{
    public DbSet<WrappedEntity> WrapperEntities;
}

public class Repository
{
    private MyContext _context;

    //contructors omitted

    public IQueryable<Entity> GetEntities()
    {
        return _context.WrapperEntities; //doesn't compile, I need some convertion here
    }
}

我已经拥有了我的转换例程,唯一缺少的是查询我的DbContext认为我的存储库而不暴露WrappedEntity类的方法,是否可能以及如何?

感谢。

1 个答案:

答案 0 :(得分:1)

通常您使用Queryable.Select进行投影以更改查询类型...

public IQueryable<Entity> GetEntities()
{
  return _context.WrapperEntities.Select(x => new Entity(){...});
}