Share via


Abfragen in LINQ to Entities

Eine Abfrage ist ein Ausdruck, der Daten aus einer Datenquelle abruft. Abfragen werden in der Regel in einer speziellen Abfragesprache, wie SQL für relationale Datenbanken oder XQuery für XML, geschrieben. Deshalb mussten Entwickler bisher für jeden abzufragenden Datenquellentyp oder Datenformattyp eine neue Abfragesprache lernen. Language-Integrated Query (LINQ) bietet ein einfacheres, konsistenteres Modell zum Arbeiten mit Daten in verschiedenen Arten von Datenquellen und Formaten. In einer LINQ-Abfrage arbeiten Sie immer mit Programmierobjekten.

Eine LINQ-Abfrageoperation besteht aus drei Aktionen: Abrufen der Datenquelle(n), Erstellen der Abfrage und Ausführen der Abfrage.

Datenquellen, die die generische IEnumerable-Schnittstelle oder die generische IQueryable-Schnittstelle implementieren, können durch LINQ abgefragt werden. Instanzen der generischen ObjectQuery-Klasse, die die generische IQueryable-Schnittstelle implementiert, dienen als Datenquelle für LINQ to Entities -Abfragen. Die generische Klasse ObjectQuery stellt eine Abfrage dar, die eine Auflistung von null oder mehr typisierten Entitätsobjekten zurückgibt. Sie können auch den Compiler mit dem C#-Schlüsselwort var (Dim in Visual Basic) den Typ einer Entität ableiten lassen.

In der Abfrage geben Sie genau die Informationen an, die aus der Datenquelle abgerufen werden sollen. In der Abfrage kann auch angegeben werden, wie die Abfrageergebnisse sortiert, gruppiert und formatiert werden sollen, bevor sie zurückgegeben werden. In LINQ wird eine Abfrage in einer Variablen gespeichert. Wenn die Abfrage eine Sequenz von Werten zurückgibt, muss die Abfragevariable selbst ein abfragbarer Typ sein. Diese Abfragevariable führt keine Aktion aus und gibt keine Daten zurück. Sie dient lediglich zur Speicherung der Abfrageinformationen. Nachdem Sie eine Abfrage erstellt haben, müssen Sie sie ausführen, damit Daten abgerufen werden.

Abfragesyntax

LINQ to Entities -Abfragen können sich aus zwei verschiedenen Syntaxarten zusammensetzen: in der Abfrageausdrucksyntax und in der methodenbasierten Abfragesyntax. Abfrageausdrucksyntax ist in C# 3.0 und Visual Basic 9.0 neu. Sie besteht aus einem Satz von in einer deklarativen Syntax geschriebenen Klauseln, ähnlich Transact-SQL oder XQuery. Beachten Sie jedoch, dass die .NET Framework-Common Language Runtime (CLR) die Abfrageausdruckssyntax selbst nicht lesen kann. Daher werden die Abfrageausdrücke beim Kompilieren in etwas übersetzt, was die CLR versteht: Methodenaufrufe. Diese Methoden werden als Standardabfrageoperatoren bezeichnet. Als Entwickler können Sie entscheiden, ob Sie die Methoden mittels Methodensyntax direkt aufrufen möchten oder ob dafür die Abfragesyntax verwendet werden soll. Weitere Informationen finden Sie unter Query Syntax versus Method Syntax.

Abfrageausdruckssyntax

Abfrageausdrücke sind eine deklarative Abfragesyntax. Mit dieser Syntax kann ein Entwickler Abfragen in einer allgemeinen Programmiersprache in einem Format ähnlich dem von Transact-SQL schreiben. Die Abfrageausdruckssyntax ermöglicht die Ausführung komplexer Filter-, Sortier- und Gruppiervorgänge mit minimalem Codeeinsatz. Weitere Informationen finden Sie unter Basic Query Operators. Beispiele, die veranschaulichen, wie die Abfrageausdrucksyntax verwendet wird, finden Sie in den folgenden Themen:

Methodenbasierte Abfragesyntax

Eine weitere Möglichkeit LINQ to Entities -Abfragen zu erstellen, besteht im Verwenden von methodenbasierten Abfragen. Dabei handelt es sich um eine Abfolge direkter Methodenaufrufe der LINQ-Operatormethoden, wobei als Parameter Lambda-Ausdrücke übergeben werden. Weitere Informationen finden Sie unter Lambda Expressions. Beispiele, die veranschaulichen, wie die methodenbasierte Syntax verwendet wird, finden Sie in den folgenden Themen:

Siehe auch

Konzepte

LINQ to Entities

Weitere Ressourcen

Getting Started with LINQ in C#
Getting Started with LINQ in Visual Basic