LINQ to SQL Queries


You define LINQ to SQL queries by using the same syntax as you would in LINQ. The only difference is that the objects referenced in your queries are mapped to elements in a database. For more information, see Introduction to LINQ Queries (C#).

LINQ to SQL translates the queries you write into equivalent SQL queries and sends them to the server for processing. More specifically, your application uses the LINQ to SQL API to request query execution. The LINQ to SQL provider then transforms the query into SQL text and delegates execution to the ADO provider. The ADO provider returns query results as a DataReader. The LINQ to SQL provider translates the ADO results to an IQueryable collection of user objects.

System_CAPS_ICON_note.jpg Note

Most methods and operators on .NET Framework built-in types have direct translations to SQL. Those that LINQ cannot translate generate run-time exceptions. For more information, see SQL-CLR Type Mapping.

The following table shows the similarities and differences between LINQ and LINQ to SQL query items.

ItemLINQ QueryLINQ to SQL Query
Return type of the local variable that holds the query (for queries that return sequences)Generic IEnumerableGeneric IQueryable
Specifying the data sourceUses the From (Visual Basic) or from (C#) clauseSame
FilteringUses the Where/where clauseSame
GroupingUses the Group…By/groupby clauseSame
Selecting (Projecting)Uses the Select/select clauseSame
Deferred versus immediate executionSee Introduction to LINQ Queries (C#)Same
Implementing joinsUses the Join/join clauseCan use the Join/join clause, but more effectively uses the AssociationAttribute attribute. For more information, see Querying Across Relationships.
Remote versus local executionFor more information, see Remote vs. Local Execution.
Streaming versus cached queryingNot applicable in a local memory scenario

Introduction to LINQ Queries (C#)
Basic LINQ Query Operations
Type Relationships in LINQ Query Operations
Query Concepts