Freigeben über


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 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.

Die folgende Abbildung veranschaulicht diesen Vorgang.

Diagramm zur Abfrageausführung

LINQ-to-SQL-Abfragen

HinweisHinweis

Die meisten Methoden und Operatoren in .NET Framework-internen Datentypen verfügen über direkte Übersetzungen zu SQL.Jene, die LINQ nicht übersetzen kann, generieren Laufzeitausnahmen.Weitere Informationen finden Sie unter SQL CLR-Typzuordnung (LINQ to SQL).

Die folgende Tabelle zeigt Ähnlichkeiten und Unterschiede zwischen den LINQ-Abfrageelementen und LINQ to SQL-Abfrageelementen.

Element

LINQ-Abfrage

LINQ to SQL-Abfrage

Rückgabetyp der lokalen Variablen, die die Abfrage (für Abfragen, die Sequenzen zurückgeben) enthält

Generischer IEnumerable

Generischer IQueryable

Angeben der Datenquelle

Verwendet die From-Klausel (Visual Basic) oder die from-Klausel (C#)

Gleiche Voraussetzung

Filtern

Verwendet die Where/where-Klausel.

Gleiche Voraussetzung

Gruppieren

Verwendet die Group…By/groupby-Klausel.

Gleiche Voraussetzung

Auswählen (Projizieren)

Verwendet die Select/select-Klausel.

Gleiche Voraussetzung

Verzögerte und unmittelbare Ausführung

Siehe Einführung in LINQ-Abfragen (C#)

Gleiche Voraussetzung

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übergreifende Abfragen (LINQ to SQL).

Remoteausführung und lokale Ausführung

 

Weitere Informationen finden Sie unter Remoteausführung von Abfragen im Vergleich zur lokalen Ausführung (LINQ to SQL).

Streamingabfragen und gepufferte Abfragen

Nicht anwendbar auf ein lokales Arbeitsspeicherszenario

 

Siehe auch

Konzepte

Einführung in LINQ-Abfragen (C#)

Grundlegende LINQ-Abfragevorgänge (C#)

Typbeziehungen in LINQ-Abfragevorgängen (C#)

Weitere Ressourcen

Abfragekonzepte in LINQ to SQL