IQueryable<T> is the type used in LINQ to SQL queries. IQueryable<T> differs from IEnumerable<T> in that it includes an expression tree. In particular, the type takes the following shape:
public interface IQueryable<T> : IEnumerable<T>, IQueryable, IEnumerable
{
}
The important interface in this declaration is IQueryable:
public interface IQueryable: IEnumerable
{
Type ElementType {get;}
Expression Expression {get;}
IQueryProvider Provider {get;}
}
The key property here is the middle one - Expression. IQueryable<T> implements IEnumerable<T>.