Linq IEnumerable接口如何具有ToList()方法

Linq IEnumerable接口如何具有ToList()方法,linq,ienumerable,iqueryable,tolist,Linq,Ienumerable,Iqueryable,Tolist,我的代码: internal DbSet<TEntity> DbSet; public virtual IEnumerable<TEntity> Get() { IQueryable<TEntity> query = DbSet; return query.ToList(); } 正如您在上面看到的,我们正在调用ToList方法。当我进入IQueryable时,我看到它继承了IEnumerable,但在IEnumerable中我看不到任何ToL

我的代码:

internal DbSet<TEntity> DbSet;

public virtual IEnumerable<TEntity> Get()
{
   IQueryable<TEntity> query = DbSet;
   return query.ToList();
}

正如您在上面看到的,我们正在调用ToList方法。当我进入IQueryable时,我看到它继承了IEnumerable,但在IEnumerable中我看不到任何ToList方法。这种方法从何而来,又是如何产生的?您能帮助我吗。

为IQueryable和IEnumerable提供的扩展方法通常分别在Queryable和Enumerable类型中找到

请记住,前者是接口。接口不能定义实现。这些是带有实现的扩展方法,这意味着它们需要在静态类中定义为静态方法

[MSDN] [MSDN] [MSDN]
你在找什么?谢谢你,杰伦。对扩展方法感兴趣的人此链接提供了有用的信息: