ANONYMOUS TYPES

An anonymous type is an object data type that is built automatically by Visual Basic and never given a name for the program to use. The type is used implicitly by the code that needs it and is then discarded.

The following code uses LINQ to select data from an array of BookInfo objects named BookInfos. It begins by using a LINQ query to fill variable book_query with the selected books. It iterates through the results stored in book_query, adding information about the selected books to a string, and displays the result in a text box.

Dim book_query =
    From book As BookInfo In BookInfos
    Where book.Year > 1999
    Select book.Title, book.Pages, book.Year
    Order By Year
 
Dim txt As String = ""
For Each book_data In book_query
    txt &= book_data.Title & " (" & book_data.Year & ", " &
        book_data.Pages & " pages)" & vbCrLf
Next book_data
txtResult.Text = txt

The book_query variable is an ordered sequence containing objects that hold the data selected by the query: Title, Pages, and Year. This type of object doesn’t have an explicit definition; it is an anonymous type created by Visual Basic to hold the selected values Title, Pages, and Year. If you hover the mouse over the book_query variable in the code editor, a tooltip appears giving the variable’s data type as:

System.Linq.IOrderedEnumerable(Of <anonymous type>)

Later, the code uses a For Each loop to enumerate the objects in book_query. The looping variable book_data must have the same type as the items in the sequence. The code does not explicitly give the variable’s data type, so Visual Basic can infer it. If you hover the mouse over the book_data variable in the code editor, a tooltip appears giving the variable’s data type as:

<anonymous type>

You are not really intended to use anonymous types explicitly. For example, you shouldn’t need to declare a new object of the anonymous type. They are intended to support LINQ. Although you won’t use anonymous types explicitly, it’s still helpful to understand what they are.


IMPORTANT INFERENCE
In this example, Visual Basic infers the data types for the book_query and book variables. This is important because they must use an anonymous type, so you cannot explicitly give them a type. Because these data types are inferred, the code will only work if Option Infer is on.

For more information on LINQ, see Chapter 20.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.135.190.42