LINQ

LINQ
QS-Informatik

Dieser Artikel wurde aufgrund von inhaltlichen Mängeln auf der Qualitätssicherungsseite der Redaktion Informatik eingetragen. Dies geschieht, um die Qualität der Artikel aus dem Themengebiet Informatik auf ein akzeptables Niveau zu bringen. Hilf mit, die inhaltlichen Mängel dieses Artikels zu beseitigen und beteilige dich an der Diskussion! (+)
Begründung: Der Artikel sollte verständlicher gestaltet und die Weblinks müßten mal gejätet werden. --WB 10:52, 21. Okt. 2010 (CEST)

LINQ (Abkürzung für Language Integrated Query) ist eine Komponente von Microsofts .NET-Framework zur Abfrage von beliebigen Datenquellen. Dazu zählen entweder programminterne Quellen, wie Objektlisten und Arrays, oder externe Quellen, wie Datenbanken und XML-Dateien. Die 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 Erik Meijer entwickelt.

Der Vorteil von LINQ besteht darin, dass der Code durch den Compiler auf Fehler geprüft und von den anbietenden Bibliotheken optimiert, oder anderweitig manipuliert — zum Beispiel übersetzt — 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, anfragemanipulierende Erweiterungsmethoden an, die zuletzt aus dem Anfrage-Ausdruck eine Gesamt-Anfrage generieren.

Im Wesentlichen ist LINQ dabei auf die Kombination von Syntaxbäumen und Anfragesprachenbestandteilen ausgelegt, wobei die Bedeutungen der Kombinationsoperationen an sich vollständig durch die LINQ-Provider festgelegt werden. Es existieren beispielsweise Projekte für LINQ to Google, LINQ to LDAP oder auch LINQ to Streams. Auch gänzlich andere Provider, die sich nicht auf den Zusammenbau von Datenabfragen beschränken, existieren. Als Beispiele für andere Anwendungsgebiete des zunächst rein lingualen Features LINQ seien monadische Parserkombinatoren und Ereignisbehandler wie im Rx Reactive Framework genannt.

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 p in products
              where p.Name.StartsWith("A")
              orderby p.ID
              select p;
 
  foreach ( var p in query ) {
      Console.WriteLine ( p.Name );
  }

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

  var query = 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

Weitere LINQ Provider

Software


Wikimedia Foundation.

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

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

  • LINQ — Language Integrated Query 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… …   Wikipédia en Français

  • Linq — Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom. LINQ ou Linq peut désigner : un jeu de société : Linq L abréviation de Language Integrated Query Catégorie : Homonymie …   Wikipédia en Français

  • LINQ (card game) — This article is about the card game. For the .NET related project, see Language Integrated Query. LINQ is a word based card game from Endless Games, introduced at the American International Toy Fair in 2005. Gameplay requires at least four… …   Wikipedia

  • Linq (jeu de société) — Pour les articles homonymes, voir Linq. Linq jeu de société Auteurs Erik Nielsen Andrea Meyer Illu …   Wikipédia en Français

  • LINQ — …   Википедия

  • Seamless Linq CodeGen — Дополнение (Add in) для Microsoft Visual Studio, разработанное фирмой AVIcode. Упрощает работу с библиотекой Seamless Linq расширяющей Microsoft LINQ to SQL. Дополнение автоматически создает файлы *.seamless.cs для LINQ to SQL классов,… …   Википедия

  • Seamless Linq — Расширение возможностей Microsoft LINQ to SQL. Библиотека Seamless Linq позволяет оперировать данными в терминах LINQ не закачивая их на клиента. См. также Seamless Linq CodeGen Ссылки Официальный сайт …   Википедия

  • The LINQ Hotel and Casino — (Лас Вегас,США) Категория отеля: 4 звездочный отель Адрес: 3535 Las Vegas …   Каталог отелей

  • 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 …   Википедия

Share the article and excerpts

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