ML, Arrays, DataSets, database tables, collections of all types?all these have a common attribute; they are data stores that hold sets of data values or objects grouped together for some reason. It follows logically that developers would also like to be able to extract individual data values or objects from these sets. To solve the problem, over the years various programming strategies and query languages have been developed that find, retrieve, and update individual values or sets of values in various data stores. Unfortunately, despite the similarity of the tasks involved, which at the query level is essentially a directive to “find this value or set of values in this data store and give it to me,” the techniques involved were developed independently, forcing developers to write specific code or learn specialized query languages, depending on the type of data they were querying: SQL to retrieve values from database tables, customized iteration loops to isolate individual values from arrays, XPath and XQuery languages to extract node values from XML, and a cornucopia of specialized search APIs.
All that’s changing. Microsoft researchers started at the beginning, and took a fresh look at the problem of searching data stores. Despite the differences in the search/retrieval process at the machine level, from a human viewpoint, the task is the same regardless of the underlying data store: “find this value or set of values in this data store and give it to me.”
That’s the basic idea behind LINQ?to provide developers with a single query and retrieval syntax that works with a large number of common data stores. By formulating LINQ queries, developers can query database tables, XML, arrays, or collections with equal aplomb. Of course, the underlying query complexity and differences between the data stores are still there; but now the runtime translates LINQ queries into the specific actions that developers used to have to learn individually.
It’s hard to overstate the importance that LINQ will have on developers’ lives, because it doesn’t just change the way you write queries for external data, it also changes the way you’ll think about common programming tasks. This MSDN article says that LINQ “addresses the object-relational mismatch by elevating relations and queries to first-class concepts.” What that means to developers is that LINQ makes the process of extracting data from different data stores and massaging it into objects that you can use in your programs much simpler than ever before.
The best news is that you don’t have to wait?you can download a Community Technical Preview (CTP) of VB.NET 9.0 now.