LINQ  
Frank Dzaebel, erstellt am: 23.12.2007, zuletzt geändert:  25.2.2010
Kategorie: C# Sprache, .NET-Version: 3.5,

LINQ ist ein Akronym für ".NET LanguageINtegratedQuery" und beinhaltet sprach-integrierte Abfrage-, Mengen- und Transformations-Operationen. In diesem Artikel werden Standard-Links für Referenz und Beispiele bzgl. LINQ aufgeführt.

Code-Beispiele:
101 LINQ Samples
Operatoren: Einschränkung-[TS], Gruppierung-[TS], Aggregation-[TS], Projektion-[TS], Menge-[TS], Konvertierung-[TS], Aufteilung-[TS], Element-[TS], Verschiedenes-[TS], Benutzer Sequenz, Sortierung-[TS], Erzeugung-[TS].
Andere:
Abfrage Ausführung [1,2,3], Quantifizierer-[TS]      [doc: Standard Query Operators]
Es gibt im Projekt: LinqSamples/SampleQueries in diesem Download einen "LINQ Project Sample Query Explorer", den Sie (u.a.) zum interaktiven Lernen dieser Operatoren hervorragend benutzen können!
 
♦ 

C# LINQ and language samples for Visual Studio 2008

!Sehr empfehlenswert! Für Details siehe hier. In der Visual Studio 2008 Hilfe enthalten!
 

Visual Studio 2008 Training Kit

Freies Microsoft Kit: Der Inhalt ist dafür entworfen, dem Benutzer das Lernen von Visual Studio 2008 Features mit der Vielfalt Framework-Techniken zu erleichtern, die folgendes beinhalten: LINQ, C# 3.0, Visual Basic 9, WCF, WF, WPF, ASP.NET AJAX, VSTO, CardSpace, SilverLight, Mobile und Application Lifecycle Management."
LINQ-spezifische Dokumente, Demos und LABs nach lokaler Installation u.a. :
  
Using LINQ to SQL (Lab Manual), 
  
Building Web Applications with Visual Studio 2008 (Lab Manual)
  
Developing Dynamic, Data-Driven Web Sites (Lab Manual) ... und viele weitere. (Demos als Code enthalten)
 

Visual Studio 2008 SDK Version 1.0

Achtung, hier ist LINQ nur sehr am Rande überhaupt ein Thema! Es geht hauptsächlich um VS-Erweiterbarkeit.
 

MSDN-Artikel/Webseiten:

C# 3.0: Die Entwicklung von LINQ und ihre Auswirkung auf das Design von C#

[MSDN Magazine, June 2007]: C# und LINQ, Die Entwicklung von LINQ, SQL-Abfragevorgang von Code
 

The LINQ Project

Englische Haupt-Projektseite, in der weitere Links zu wichtigen Artikeln zu finden sind.
 

LINQ: .NET Language Integrated Query

Im .NET Framework 3.5 wurden Allzweck-Abfragekonstrukte zugefügt, die für vielerlei Arten von Informations-Quellen anwendbar sind, nicht nur relationale oder XML Daten. Diese werden .NET Language-Integrated Query (LINQ) genannt. (32 gedruckte Seiten, Englisch)
 

LINQ to SQL: .NET Language-Integrated Query for Relational Data

  LINQ to SQL stellt eine Laufzeit-Infrastruktur zur Behandlung von relationalen Datenobjekten zur Verfügung, ohne die Fähigkeit der Abfrage zu verlieren. Ihre Applikation kann die Objekte frei modifizieren und LINQ to SQL steht im Hintergrund und verfolgt die Änderungen automatisch. (119 gedruckte Seiten, Englisch)   (siehe auch: C#  LINQ to SQL Hands on Lab)
 
Parallel LINQ: Ausführen von Abfragen auf Mehrkernprozessoren Das Verwenden von Technologien wie PLINQ wird immer wichtiger werden, um die Skalierbarkeit der Software auf künftigen parallelen Mikroprozessorarchitekturen sicherzustellen. (siehe auch die Webcasts zu Parallel Linq, Download der Jun08CTP, Parallel Computing Developer Center, Optimieren von verwaltetem Code für Mehrkerncomputer, Ausführen von Abfragen auf Mehrkernprozessoren, Paralleles Computing mit der Managed-Code-Library ParallelFX | dotnetpro)
   

Object Relational Designer (O/R Designer)

Der "Objekt-relationale Designer" (O/R Designer) stellt eine visuelle Entwurfs-Oberfläche zur Erzeugung von "LINQ to SQL" Entity Klassen und Assoziationen (relationships) dar, die auf Objekten in der Datenbank basieren.
 

.NET Language-Integrated Query for XML Data

LINQ to XML nutzt die Standard-Abfrage-Operatoren und fügt spezifische XML-Erweitungen hinzu. Die Beispiele sind hier meistens in C# gezeigt (44 gedruckte Seiten, Englisch)
 

The .NET Standard Query Operators

[Technische Spezifikation] Die Standard-Abfrage-Operatoren sind eine API, die es ermöglichen, jedes .NET Array oder Collection abzufragen. Die Standard-Abfrage-Operator-API besteht aus Methoden, die in der statischen Klasse: "System.Query.Sequence" im Assembly "System.Query.dll" enthalten sind. (35 gedruckte Seiten, Englisch)
 

Overview of C# 3.0

Technischer Überblick über C# 3.0, das viele Sprach-Erweiterungen auf der .NET 2.0 Basis einführt, um die Erzeugung und Nutzung von Klassen und Biblioteken mit höherwertigem, funktionalen Stil zu unterstützen. (38 gedruckte Seiten, Englisch)

Getting Started with LINQ in C#

Dieser Artikel beinhaltet grundlegende Hintergrundinformationen, die Ihnen helfen, die LINQ Dokumentation und Beispiele zu verstehen.
 

LINQ Query Expressions (C# Programming Guide)

Grundlegendes über Query Expressions mit einer umfangreichen HowTo-Liste u.a. über Joins (Left, Inner, Outer, Grouped).
 

Expression Trees

"Expression trees" (Ausdrucks-Bäume) stellen einen Sprach-Level-Code in Form von Daten dar. Die Daten sind in einer Baum-artigen Struktur gespeichert. Jeder Knoten in dem Ausdrucks-Baum stellt wieder einen Ausdruck dar, zum Beispiel einen Methoden-Aufruf, oder eine Binäroperation wie etwa x < y realisiert. (Englisch)
 

Dynamic LINQ

Teil1: "Using the LINQ Dynamic Query Library" - ScottGu's Blog. Scott Guthrie ist General Manager in Microsofts Developer Devision und (zusammen mit Charlie Calvert) einer der intensivsten Blogger bezüglich LINQ. Seine Artikel sind sehr empfehlenswert.
 
LINQ-Provider:
LINQ to TerraServer, LINQ to Amazon, LINQ to LDAP, LINQ to GoogleDesktop, Linq for NHibernate, LINQ To Flickr, LINQ to SharePoint
Weitere LINQ-Provider: LINQ to Active Directory, LINQ to Bindable Sources (SyncLINQ), LINQ over C# project, LINQ to CRM, LINQ To Geo (Language Integrated Query for Geospatial Data), LINQ to Excel, LINQ to Expressions (MetaLinq), LINQ Extender (Toolkit for building LINQ Providers), LINQ to Google, LINQ to Indexes (LINQ and i40), LINQ to IQueryable (Matt Warren on Providers), LINQ to JSON, LINQ to JavaScript, LINQ to LLBLGen Pro, LINQ to Lucene, LINQ to Metaweb(freebase), LINQ to MySQL to Oracle and PostgreSql (DbLinq), LINQ to NCover, LINQ to Opf3, LINQ to Parallel (PLINQ), LINQ to RDF Files, LINQ to SimpleDB, LINQ to Streams, LINQ to WebQueries, LINQ to WMI, LINQ to XtraGrid,
Artikel dazu: [
Calling functions in LINQ queries], [LINQ extensions - Simplified keyword search], [Linq provider basics], [Building an IQueryable provider series], [LINQ IQueryable Toolkit - Home]

Introducing LINQ

Ansprechende u.a. auch grafisch aufbereitete Einführung in LINQ von Barnett Granville [MVP]:
Teil1, Teil2, Teil3, Teil4, Teil5.

Tools:
LINQPad Mit LINQPad können Sie interaktiv SQL Queries auf Datenbanken u.a. in C# durchführen (momentan ohne Intellisense, aber vorbereitet). Unterstützt C# 3.0 und .NET Framework 3.5 nebst LINQ to SQL, LINQ to Objects und LINQ to XML [empfehlenswert]
 
Visual LINQ Query Builder Der "Visual LINQ Query Builder" ist ein Add-In für den Visual Studio 2008 Designer der Ihnen hilft, visuell unterstützte LINQ to SQL Abfragen auszuführen. Funktionell stellt er etwa das gleiche zur Verfügung, wie der "Microsoft Access Query Builder", aber für LINQ.
Leider teilweise Probleme im deutschen Visual Studio 2008.

Videos/Webcasts:
LINQ und Konsorten (8 deutsche Webcasts) Einführung in LINQ, Überblick über die Möglichkeiten der Datenprogrammierung innerhalb von C#, LINQ to SQL, LINQ to XML, LINQ to Entities, bis hin zu  ADO.NET Data Services und dem ADO.NET Entity Framework.  

LINQ Framework - Mit Daten arbeiten, aber wie?

!Sehr empfehlenswert! [Jens Häupel, Level 200, deutsch]: Das .NET Language Integrated Query (LINQ) Framework - Mit Daten arbeiten - aber wie? ... In diesem Webcast wird LINQ für C# und dessen innovatives API vorgestellt.
 
Parallele Programmierung mit .NET 4.0 Das .NET Framework 4.0 bringt revolutionär neue Methoden zur Multikern-Programmierung ins Spiel. Sei es die neue 'Parallel Task Library' oder die spektakuläre und dennoch so simple Erweiterung von LINQ: Parallel LINQ. Abgerundet werden die damit eröffneten Möglichkeiten durch passende Erweiterungen innerhalb von Visual Studio, die das Debuggen dieser Anwendungen erheblich vereinfachen. Tom Wendel gibt einen Einblick in die neue "Parallelwelt".

C# 3.0 - Die Spracherweiterungen in Visual Studio 2008

[Bernd Marquardt, Level 200]: In Visual Studio 2008 wird u.a. eine neue, erweiterte Version der Programmiersprache C# Einzug halten. Viele Erweiterungen in C# 3.0 haben mit der Abfrage von Daten zu tun (LINQ). In diesem Webcast stellen wir die eher allgemeinen Neuerungen in C# vor.
 

Charlie Calvert's Community Blog : LINQ to SQL Introductory Video

Das Video zeigt grundlegende Schritte um "LINQ to SQL" Code für Visual Studio 2008 Beta 1 zu schrieben. Stichworte sind: "LINQ to SQL designer", "DataContext", "ORM-style entity classes", LINQ foreach loop, Anonymous Types to create a projection, ObjectDumper, var.  (~25 Minuten)
 
Das offizielle Microsoft ASP.NET Portal Hier sind 7 englische ASP.NET fokussierte LINQ-Videos, die jeweils etwa 10 Minuten lang sind.
 
Visual Studio 2008 - Die neuen ASP.NET 3.5 Controls Visual Studio 2008 bringt für den Web-Entwickler nur wenig Neues. Einzig drei Steuerelemente zur Datenbindung kommen neu hinzu. Und eins davon ist die LinqDatasource.
 
Visual Studio 2008 und .NET Framework 3.5 Dariusz Parys beleuchtet in einem kleinen Teil des Webcasts Spracherweiterungen in C# nebst Neuerungen bei C++/CLI, LINQ und das ADO.NET Entity Model neben weiteren 2008 Features.
 
Parallel-LINQ (Teil 1-3)

Erweiterungen für C# (und VB.NET), die eine deutliche Vereinfachung der Parallel-Programmierung ermöglichen. Parallel-LINQ ermöglicht nicht nur die Parallelisierung von Schleifen und Code-Blöcken, sondern bietet einfache Varianten an, um Berechnungen asynchron durchzuführen. In drei Webcasts werden verschiedenen Klassen der Parallel-LINQ-Erweiterung vorgestellt und an Beispielen demonstriert. Performance-Verbesserungs-Möglichkeiten von parallelem Code, wenn moderne Multi-Core-Prozessoren zur Verfügung stehen.


Bücher:  (ohne spezielle Reihenfolge)
LINQ: Direkte Abfragen mit Language-Integrated Query Sprache: Deutsch: Autor: Thorsten Kansy
 
Microsoft LINQ - Crashkurs Sprache: Deutsch, Autoren: Paolo Pialorsi,Marco Russo.
 
LINQ Sprache: Deutsch, Autor: Özgür Aytekin
 
LINQ im Einsatz Spache: Deutsch, Autoren: Fabrice Marguerie,Steve Eichert, Jim Wooley
 
LINQ Quickly Sprache: Englisch, Autor: N. Satheesh Kumar
 
Introducing Microsoft® LINQ Sprache: English, Autoren: Paolo Pialorsi, Marco Russo
 
Foundations of Linq in C#: Language Integrated Query in C# 2008 Sprache: Englisch, Autor: Joseph C. Rattz
 
Manning: LINQ in Action Sprache: Englisch, Autoren: Fabrice Marguerie, Steve Eichert and Jim Wooley