为什么 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()
都丢失了。
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()
都丢失了。