Visual Basic doesn’t really execute LINQ queries. Instead it converts them into a series of function calls (provided by extension methods) that perform the query. Though the LINQ query syntax is generally easier to use, it is sometimes helpful to understand what those function calls look like.
The following sections explain the general form of these function calls. They explain how the function calls are built, how you can use these functions directly in your code, and how you can extend LINQ to add your own LINQ query methods.
Suppose a program defines a List(Of Customer) named all_customers and then defines the following query expression:
Dim q1 = From cust In all_customers Where cust.AccountBalance < 0 Order By cust.AccountBalance Select cust.Name, cust.AccountBalance
This query finds customers that have AccountBalance values less than zero, orders them by AccountBalance, and returns an IEnumerable object that can enumerate their names and balances. (Example program LinqLambda, which is available for download on the book’s website, defines a simple Customer class and performs a similar query.)
To perform this selection, Visual Basic converts the query into a series of function calls to form a method-based query that performs the same tasks as the original query. For example, the following method-based query returns roughly the same results as the original LINQ query:
Dim q2 = all_customers. Where(AddressOf OwesMoney). OrderBy(AddressOf ...