The set of methods declared in the Queryable class provides an implementation of the standard query operators for querying data sources that implement IQueryable<(Of <(T>)>). The standard query operators are general purpose methods that follow the LINQ pattern and enable you to express traversal, filter, and projection operations over data in any .NET-based programming language.
The majority of the methods in this class are defined as extension methods that extend the IQueryable<(Of <(T>)>) type. This means they can be called like an instance method on any object that implements IQueryable<(Of <(T>)>). These methods that extend IQueryable<(Of <(T>)>) do not perform any querying directly. Instead, their functionality is to build an Expression object, which is an expression tree that represents the cumulative query. The methods then pass the new expression tree to either the Execute<(Of <(TResult>)>)(Expression) method or the CreateQuery<(Of <(TElement>)>)(Expression) method of the input IQueryable<(Of <(T>)>). The method that is called depends on whether the Queryable method returns a singleton value, in which case Execute<(Of <(TResult>)>)(Expression) is called, or has enumerable results, in which case CreateQuery<(Of <(TElement>)>)(Expression) is called.
The actual query execution on the target data is performed by a class that implements IQueryable<(Of <(T>)>). The expectation of any IQueryable<(Of <(T>)>) implementation is that the result of executing an expression tree that was constructed by a Queryable standard query operator method is equivalent to the result of calling the corresponding method in the Enumerable class, if the data source were an IEnumerable<(Of <(T>)>).
In addition to the standard query operator methods that operate on IQueryable<(Of <(T>)>) objects, this class also contains a method, AsQueryable, which types IEnumerable objects as IQueryable objects.