动态实体框架.tolist()返回错误



我正在尝试创建一个查询构建器,我遇到了一个问题。我希望最终用户能够选择他们希望选择的字段。

我的goad是做这样的事情

public IQueryable Get(Type entityType)
{
    return _dbContext.Set(entityType).AsQueryable();
}

但是,当我尝试做类似_repository.Get(myType).ToList();的事情时或者实际上我不编译的任何东西,并收到这样的消息。

iqueryable'不包含" tolist"的定义,也没有扩展方法" tolist"接受类型的" iQueryable"的第一个参数(您是否缺少使用指令或汇编参考?)

有人可以帮忙吗?

您需要使用IQueryable<T>接口而不是IQueryableIQueryable<T>IEnumerable<T>继承,ToListIEnumerable<T>的扩展方法。IQueryable<T>具有其他扩展方法,例如ToListAsync及其过载。

如果您要创建通用存储库,则将您的存储库类定义为通用类。这样做可以以这种方式实现Get

public class Repository<T> : IRepository<T> where T : class, 
{
   public IQueryable<T> Get()
   {
      return _dbContext.Set<T>();
   }
   //...
}

这里的答案是,我无法使用.ToList()使用Iqueryable,但我可以使用IQueryable<T>。因此,我要做的就是将接口添加到称为IEntity的实体,然后进行IQueryable<IEntity>().ToList();

最新更新