为什么 class DBSet 的 AsQueryable() 不在 MSDN 文档中?

Why is AsQueryable() for the class DBSet not in the MSDN documentation?

This link 描述了 class DBSet.This 类型实现 IQueryable,这意味着它必须具有 AsQueryable() 的实现。但是在link的列表中我找不到这个方法。 谁能告诉我为什么?

我最初的回答虽然希望有用,但并不完全正确,正如 Eli Arbel 所指出的那样,所以我重写了它。

DbSet<TEntity> class 具有复杂的继承层次结构。这是一个只显示其中一部分的 UML 图。

方法 AsQueryable<TEntity>() 是在 IEnumerable<TEntity> 上定义的扩展方法,它将 IEnumerable<TEntity> 转换为 IQueryable<TEntity> 并作为 DbSet<TEntity> 实现 IEnumerable<TEntity> 你可以使用扩展方法:

IQueryable<MyEntity> queryable = myDbSet.AsQueryable();

但是,它不是很有用,因为 DbSet<TEntity> 也实现了 IQueryable<TEntity>,所以调用 AsQueryable() 只会 return IQueryable<TEntity> 接口。您不妨将上面的代码片段写成:

IQueryable<MyEntity> queryable = myDbSet;

此行为在 Queryable.AsQueryable() 的文档中进行了解释,这就是您要查找的文档。

链接的文档页面确实包含很多扩展方法是正确的,但由于原则上可能的扩展方法的范围是无限的,因此不能保证所有扩展方法都会在列表中。特别是 AsQueryable()AsEnumerable() 都丢失了。