IEnumerable <t>接口如何具有ToList()方法

时间:2015-08-29 11:27:31

标签: linq ienumerable iqueryable tolist

我的代码:

internal DbSet<TEntity> DbSet;

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

如上所示,我们调用ToList()方法。当我进入IQueryable时,我已经看到它从IEnumerable获得继承但在IEnumerable中我看不到任何ToList()方法。这种方法来自何处以及如何来自?你能帮我吗?

1 个答案:

答案 0 :(得分:4)

IQueryable<T>IEnumerable<T>提供的扩展程序通常分别在QueryableEnumerable类型中找到。

请记住,前者是接口。接口不能定义实现。这些是扩展方法(带有实现),这意味着它们需要在static class static方法中定义。