Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Eine Abfrage ist ein Ausdruck, der Daten aus einer Datenquelle abruft. Abfragen werden in der Regel in einer speziellen Abfragesprache ausgedrückt, z. B. SQL für relationale Datenbanken und XQuery für XML. Daher mussten Entwickler eine neue Abfragesprache für jeden Typ von Datenquelle oder Datenformat erlernen, den sie abfragen. Language-Integrated Query (LINQ) bietet ein einfacheres, konsistentes Modell zum Arbeiten mit Daten über verschiedene Arten von Datenquellen und -formaten hinweg. In einer LINQ-Abfrage arbeiten Sie immer mit Programmierobjekten.
Ein LINQ-Abfragevorgang besteht aus drei Aktionen: Abrufen der Datenquelle oder Quellen, Erstellen der Abfrage und Ausführen der Abfrage.
Datenquellen, die die IEnumerable<T> generische Schnittstelle oder die IQueryable<T> generische Schnittstelle implementieren, können über LINQ abgefragt werden. Instanzen der generischen ObjectQuery<T> Klasse, die die generische IQueryable<T> Schnittstelle implementiert, dienen als Datenquelle für LINQ to Entities-Abfragen. Die ObjectQuery<T> generische Klasse stellt eine Abfrage dar, die eine Auflistung von null oder mehr typierten Objekten zurückgibt. Sie können auch zulassen, dass der Compiler den Typ einer Entität mithilfe des C#-Schlüsselworts var (Dim in Visual Basic) ableiten kann.
In der Abfrage geben Sie genau die Informationen an, die Sie aus der Datenquelle abrufen möchten. Eine Abfrage kann auch angeben, wie diese Informationen sortiert, gruppiert und geformt werden sollen, bevor sie zurückgegeben wird. In LINQ wird eine Abfrage in einer Variablen gespeichert. Wenn die Abfrage eine Abfolge von Werten zurückgibt, muss die Abfragevariable selbst ein abfragebarer Typ sein. Diese Abfragevariable führt keine Aktion aus und gibt keine Daten zurück. es speichert nur die Abfrageinformationen. Nachdem Sie eine Abfrage erstellt haben, müssen Sie diese Abfrage ausführen, um daten abzurufen.
Abfragesyntax
LINQ to Entities-Abfragen können in zwei verschiedenen Syntaxen zusammengesetzt werden: Abfrageausdruckssyntax und methodenbasierte Abfragesyntax. Die Abfrageausdruckssyntax ist neu in C# 3.0 und Visual Basic 9.0 und besteht aus einer Reihe von Klauseln, die in einer deklarativen Syntax geschrieben wurden, die Transact-SQL oder XQuery ähnelt. Die .NET Framework Common Language Runtime (CLR) kann jedoch die Abfrageausdruckssyntax selbst nicht lesen. Daher werden Abfrageausdrücke (Query Expressions) während der Kompilierungszeit in etwas übersetzt, das der CLR versteht: Methodenaufrufe. Diese Methoden werden als Standardabfrageoperatoren bezeichnet. Als Entwickler haben Sie die Möglichkeit, sie direkt mithilfe der Methodensyntax anstelle der Abfragesyntax aufzurufen. Weitere Informationen finden Sie unter Abfragesyntax und Methodensyntax in LINQ.
Abfrageausdruckssyntax
Abfrageausdrücke sind eine deklarative Abfragesyntax. Mit dieser Syntax kann ein Entwickler Abfragen in einer hochformatierten Sprache schreiben, die Transact-SQL ähnelt. Mithilfe der Abfrageausdruckssyntax können Sie sogar komplexe Filter-, Sortier- und Gruppierungsvorgänge für Datenquellen mit minimalem Code ausführen. Weitere Informationen finden Sie unter Basic Query Operations (Visual Basic). Beispiele zur Verwendung der Abfrageausdruckssyntax finden Sie in den folgenden Themen:
Syntaxbeispiele für Abfrageausdrücke: Verknüpfungsoperatoren
Beispiele für abfrageausdruckssyntax: Navigieren in Beziehungen
Methodenbasierte Abfragesyntax
Eine weitere Möglichkeit zum Verfassen von LINQ to Entities-Abfragen ist die Verwendung von methodenbasierten Abfragen. Die methodenbasierte Abfragesyntax ist eine Sequenz von direkten Methodenaufrufen an LINQ-Operatormethoden, wobei Lambda-Ausdrücke als Parameter übergeben werden. Weitere Informationen finden Sie unter Lambdaausdrücke. Beispiele zur Verwendung methodenbasierter Syntax finden Sie in den folgenden Themen: