Asp.net core 将Lambda作为参数传递到EFCore中的Repository方法中

Asp.net core 将Lambda作为参数传递到EFCore中的Repository方法中,asp.net-core,entity-framework-core,Asp.net Core,Entity Framework Core,我正在尝试实现所描述的存储库模式 但是,这些关系并未包括在内 public IEnumerable<MyEntity> GetWithRelationship(params Expression<Func<MyEntity, object>>[] includeProperties) { var set = _context.MyEntities; foreach (var includeProperty in includeProperties)

我正在尝试实现所描述的存储库模式

但是,这些关系并未包括在内

public IEnumerable<MyEntity> GetWithRelationship(params Expression<Func<MyEntity, object>>[] includeProperties)
{
  var set = _context.MyEntities;
  foreach (var includeProperty in includeProperties)
  {
    set.Include(includeProperty);
  }
  return set.ToList();
}

您必须将
set
重新分配给
Include()
方法的返回值。但是,为了避免编译错误,您必须首先将
集合
视为
IQueryable

var set = _context.MyEntities as IQueryable<MyEntity>;

foreach (var includeProperty in includeProperties)
{
    set = set.Include(includeProperty);
}

return set.ToList();
var set=\u context.MyEntities作为IQueryable;
foreach(includeProperty中的var includeProperty)
{
set=set.Include(includeProperty);
}
返回set.ToList();

抛出:无法隐式地将类型“IIncludableQueryable”转换为“DbSet”。我可以将上下文中的类型转换为IQueryable,但随后会丢失诸如“.Add()”之类的方法
var set = _context.MyEntities as IQueryable<MyEntity>;

foreach (var includeProperty in includeProperties)
{
    set = set.Include(includeProperty);
}

return set.ToList();