Language Integrated Query

Language Integrated Query

LINQ (Abkürzung für Language INtegrated Query) ist eine Komponente von Microsofts .NET-Framework zur Abfrage von Datenquellen wie Datenbanken oder XML-Dateien. Besonderheit ist, dass SQL-, XLink- und XQuery-Anfragen direkt in .NET-Programmiersprachen wie C# 3.0 oder VB.Net 9.0 als Code statt als String eingebunden werden können. LINQ wurde federführend von Turbo-Pascal- und C#-Autor Anders Hejlsberg entwickelt.

Der Vorteil von LINQ besteht darin, dass der Code durch den Compiler auf Fehler geprüft und optimiert werden kann. Die Syntax von LINQ ist dabei an den Befehlen der SQL-Anfragesprache wie „select“, „from“ und „where“ angelehnt. Die Befehle werden jedoch nicht in SQL-Code umgewandelt, sondern sprechen, mit Hilfe der im .NET-Framework 3.5 eingeführten Erweiterungen, direkt .NET-Objekte an, welche die gewünschte Operation ausführen. Diese Objekte müssen die Schnittstelle IEnumerable implementieren.

Im Wesentlichen ist LINQ dabei auf die Manipulation von Syntaxbäumen ausgelegt. Die Fähigkeit von LINQ to XML und LINQ to SQL auf XML-Datensätze bzw. SQL-Datenbanken zugreifen zu können besteht darin, dass es sich dabei um Erweiterungen handelt, welche die Daten als Ausdrucksbäume abstrahieren, auf welche schließlich LINQ angewendet wird. Mit entsprechenden Erweiterungen (LINQ-Providern) ist es möglich, alle Arten von Datenquellen mittels LINQ abzufragen. Es existieren beispielsweise schon Projekte für LINQ to Google, LINQ to LDAP oder auch LINQ to Streams.

Das LINQ-Framework enthält zudem das Tool SQLMetal, welches die automatische Codegenerierung von Wrapper-Klassen für Microsoft SQL Server-Datenbanken in C# mit DLINQ ermöglicht, was Softwareentwicklern einen zusätzlichen Komfort bei der Applikationsentwicklung bietet.

Inhaltsverzeichnis

Standard Data Provider

Speicherobjekte (LINQ to Objects)
Wird verwendet, um Werte aus Collection-Objekten im Arbeitsspeicher abzufragen. Die Ergebnisse der Abfragen werden nicht dynamisch aktualisiert.
SQL Server (LINQ to SQL)
Dabei wird eine Linq-Abfrage zu einem SQL-Statement umgewandelt. Dieses Statement ist nur für MS SQL Server ausgelegt. Da SQL Server die Daten relational speichert und Linq mit Datenkapselung arbeitet, müssen die Objekte „gemappt“ werden.
Data Sets (LINQ to Datasets)
Da der SQL-Provider nur mit MS SQL Servern funktioniert, ist es möglich, mit diesem Provider Daten aus Data-Sets zu beziehen. Die Data-Sets können mittels ADO.net auch aus anderen Datenbanken gefüllt werden, wodurch es indirekt möglich ist, mittels Linq auf beliebige Datenbanksysteme zuzugreifen.
XML-Dokumente (LINQ to XML)
Hierbei wird ein XML Dokument zu einer „Collection“ von Elementen umgewandelt, auf die wieder Abfragen durchgeführt werden können.

Beispiel

In diesem Beispiel werden alle Produkte aufgelistet, deren Produktbezeichnung mit einem A beginnt. Die Produkte werden nach ihrer ID sortiert.

  var query = from product in this.Products
              where product.Name.StartsWith("A")
              orderby product.ID
              select product;
 
  foreach ( var product in query )
  {
      Console.WriteLine ( product.Name );
  }

Alternativ können auch sogenannte Erweiterungsmethoden mit Lambda-Ausdrücken verwendet werden. In solche werden LINQ-Abfragen auch vom Compiler übersetzt.

  var query = this.Products
                .Where(p => p.Name.StartsWith("A"))
                .OrderBy(p => p.ID);
 
  foreach ( var product in query )
  {
      Console.WriteLine ( product.Name );
  }

Literatur

  • Özgür Aytekin: LINQ - Theorie und Praxis für Einsteiger. Addison-Wesley 2008, ISBN 978-3-8273-2616-4.
  • Paolo Pialorsi, Marco Russo: Datenbankprogrammierung mit Microsoft LINQ. Microsoft Press Deutschland 2008, ISBN 978-3-86645-428-6.

Weblinks

LINQ to XML

  • LINQ to XML Einführung in LINQ to XML (dreiteilige Artikelserie)

LINQ to SQL


Wikimedia Foundation.

Игры ⚽ Нужно сделать НИР?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Language Integrated Query — (Requête intégrée au langage, aussi connu sous le nom de LINQ) est un composant du Framework .NET de Microsoft qui ajoute des capacités d interrogation sur des données aux langages .NET en utilisant une syntaxe proche de celle de SQL. La plupart… …   Wikipédia en Français

  • Language Integrated Query — (LINQ) es un proyecto de Microsoft que agrega consultas nativas semejantes a las de SQL a los lenguajes de la plataforma .NET, inicialmente a los lenguajes Visual Basic .NET y C#. Muchos conceptos que LINQ ha introducido fueron originalmente… …   Wikipedia Español

  • Language Integrated Query — LINQ redirects here. For the card game, see Linq (card game). Language Integrated Query Influenced by SQL, Haskell Language Integrated Query (LINQ, pronounced link ) is a Microsoft .NET Framework component that adds native data querying… …   Wikipedia

  • Language Integrated Query — LINQ в составе .NET Framework Language Integrated Query (LINQ)  проект Microsoft по добавлению синтаксиса языка запросов, напоминающего SQL, в языки программирования платформы .NET Framework …   Википедия

  • Query language — Query languages are computer languages used to make queries into databases and information systems. Broadly, query languages can be classified according to whether they are database query languages or information retrieval query languages. The… …   Wikipedia

  • language — /lang gwij/, n. 1. a body of words and the systems for their use common to a people who are of the same community or nation, the same geographical area, or the same cultural tradition: the two languages of Belgium; a Bantu language; the French… …   Universalium

  • Oxygene (programming language) — Oxygene Developer RemObjects Software Stable release 3.0.21 (August 29, 2009; 2 years ago (2009 08 29)) Influenced by Object Pas …   Wikipedia

  • C Sharp (programming language) — The correct title of this article is C# (programming language). The substitution or omission of the # sign is because of technical restrictions. C# Paradigm(s) multi paradigm: structured, imperative …   Wikipedia

  • Common Language Infrastructure — Not to be confused with Command line Interface. The Common Language Infrastructure (CLI) is an open specification developed by Microsoft and standardized by ISO[1] and ECMA[2] that describes the executable code and runtime environment that form… …   Wikipedia

  • Common Intermediate Language — For the counterpart to compiled assembly in the Microsoft .NET framework, see .NET assembly. Common Intermediate Language (CIL, pronounced either sil or kil ) (formerly called Microsoft Intermediate Language or MSIL) is the lowest level human… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”