Language-Integrated Query (LINQ) is a technique for querying data from .NET languages. LINQ to Entities is the mechanism that facilitates the use of LINQ to write queries against our conceptual model such as the Entity Data Model.
Since LINQ is a declarative language, let's focus on what data we need rather than how it should be retrieved. LINQ to Entities provides a nice abstraction over the Entity Data Model so that we can use LINQ to specify what data should be retrieved, and the LINQ to Entities provider will take care of accessing the database and fetching the required data for us.
When we use LINQ to Entities to execute the LINQ queries against the Entity Data Model, these LINQ queries are first compiled to determine what data we want to fetch. It will then be executed and from the application's perspective, the results will be returned as CLR objects, that is, something that .NET understands.
However...