LINQ to SQL-Abfragen
Sie definieren LINQ to SQL-Abfragen, indem Sie die gleiche Syntax wie in LINQ verwenden. Der einzige Unterschied besteht darin, dass die in Abfragen referenzierten Objekte den Elementen in einer Datenbank zugeordnet werden. Weitere Informationen finden Sie unter Introduction to LINQ queries (C#) (Einführung in LINQ-Abfragen (C#)).
LINQ to SQL übersetzt die Abfragen, die Sie in entsprechende SQL-Abfragen schreiben, und sendet diese zur Verarbeitung an den Server. Ihre Anwendung verwendet die LINQ to SQL-API, um die Abfrageausführung anzufordern. Der LINQ to SQL-Anbieter wandelt dann die Abfrage in SQL-Text um und übergibt die Ausführung an den ADO-Anbieter. Der ADO-Anbieter gibt Abfrageergebnisse als DataReader
zurück. Der LINQ to SQL-Anbieter übersetzt die ADO-Ergebnisse zu einer IQueryable-Auflistung von Benutzerobjekten.
Hinweis
Für die meisten Methoden und Operatoren in integrierten .NET Framework-Datentypen gibt es direkte Übersetzungen zu SQL-Befehlen. Jene, die LINQ nicht übersetzen kann, generieren Laufzeitausnahmen. Weitere Informationen finden Sie unter SQL-CLR-Typzuordnung.
Die folgende Tabelle zeigt Ähnlichkeiten und Unterschiede zwischen den Abfrageelementen LINQ-Abfrageelementen und LINQ to SQL-Abfrageelementen.
Element | LINQ-Abfrage | LINQ to SQL-Abfragen |
---|---|---|
Rückgabetyp der lokalen Variablen, die die Abfrage (für Abfragen, die Sequenzen zurückgeben) enthält | Generisches IEnumerable |
Generisches IQueryable |
Angeben der Datenquelle | Verwendet die From -Klausel (Visual Basic) oder from (C#) |
identisch |
Filterung | Verwendet die Where /where -Klausel. |
identisch |
Gruppierung | Verwendet die Group…By /groupby -Klausel. |
identisch |
Auswählen (Projizieren) | Verwendet die Select /select -Klausel. |
identisch |
Verzögerte und unmittelbare Ausführung | Siehe Einführung in LINQ-Abfragen(C#) | identisch |
Implementieren von Joins | Verwendet die Join /join -Klausel. |
Kann die Join /join -Klausel verwenden, effektiver ist jedoch das AssociationAttribute-Attribut. Weitere Informationen finden Sie unter Beziehungsübergreifendes Abfragen. |
Remoteausführung und lokale Ausführung | Weitere Informationen finden Sie unter Remoteausführung und lokale Ausführung. | |
Streamingabfragen und gepufferte Abfragen | Nicht anwendbar auf ein lokales Arbeitsspeicherszenario |