This article is from MSDN and has been written by Don Box and Anders Hejlsberg.
.NET Language-Integrated Query
After two decades, the industry has reached a stable point in the evolution of object-oriented (OO) programming technologies. Programmers now take for granted features like classes, objects, and methods. In looking at the current and next generation of technologies, it has become apparent that the next big challenge in programming technology is to reduce the complexity of accessing and integrating information that is not natively defined using OO technology. The two most common sources of non-OO information are relational databases and XML.
Rather than add relational or XML-specific features to our programming languages and runtime, with the LINQ project we have taken a more general approach and are adding general-purpose query facilities to the .NET Framework that apply to all sources of information, not just relational or XML data. This facility is called .NET Language-Integrated Query (LINQ).
Getting Started with Standard Query Operators
To see language-integrated query at work, we’ll begin with a simple C# 3.0 program that uses the standard query operators to process the contents of an array:
using System; using System.Linq; using System.Collections.Generic; class app { static void Main() { string[ ] names = { "Burke", "Connor", "Frank", "Everett", "Albert", "George", "Harris", "David" }; IEnumerable<string> query = from s in names where s.Length == 5 orderby s select s.ToUpper(); foreach (string item in query) Console.WriteLine(item); } }
If you were to compile and run this program, you’d see this as output:
BURKE DAVID FRANK To understand how language-integrated query works, we need to dissect the first statement of our program. IEnumerable<string> query = from s in names where s.Length == 5 orderby s select s.ToUpper();