Überblick LINQ



Marco Seraphin
MCP - MCAD - MCT




                   Seraphin@develope-it.de
                   Seraphin@develope-
Was ist .NET
l   Agenda

    Ø   Die Idee hinter Linq
    Ø   Die verschiedenen Varianten
    Ø   Kurze Syntax-Übersicht
    Ø   Praktische Beispiele
    Ø   Fazit und Ausblick
Linq - Die Idee



   Daten != Objekte
Linq - Die Idee
l   Leistungsstarke Backend-Systeme
    Ø   DB, SAP, Exchange, SharePoint, BizTalk
l   Leistungsstarke Hochsprachen
    Ø   C#, VB.Net, Java, Delphi

Aber:
         Lücke bei der Datenbeschaffung im Bereich
         der Middleware

         Viel String-basiert, wenig typisiert (Connection-
         String, SQL Statement als String etc.)
Linq - Die Idee



 Imperativ         Deklaritiv

    Nicht wie, sondern was !
Linq - Die Idee
l   Auch Daten/Informationsbeschaffung
    innerhalb des Programms sehr
    „technisch“
foreach ()
{
 for ()
  {
    if (x == 5)
      {
        ...
      }
  }
}
Linq - Die Idee


      Langugage
   INtegrated Query
Linq - Die Idee
  Ø   First-Level Erweiterung der .Net Sprachen
  Ø   Streng typisiert
  Ø   IntelliSense Unterstützung in VS 2008.Net
  Ø   Queries werden zur Laufzeit geprüft, nicht
      erst zur Ausführungszeit
  Ø   Wiederverwendbarkeit von Queries (Zugriff
      auf Daten erfolgt erst zum Zeitpunkt auf
      das Ergebnis)
  Ø   Verschiedene Ausprägungen (SQL, ADO,
      XML)
  Ø   Erweiterbares Provider -Konzept (Linq-to-
      SharePoint, Linq-to-Amazon etc.)
Linq - Die Varianten
Linq - Die Varianten
l   Linq to Objects
    Ø   arbeitet auf IEnumerable
l   Linq to XML
    Ø   arbeitet auf XML Srtukturen
l   Linq to SQL
    Ø   arbeitet auf SQL-Datenbanken
    Ø   (Light-weight OR-Mapper)
l   Linq to Entities
    Ø   ADO.Net Entity FrameWork
Linq - Die Varianten
l   Linq to SharePoint
l   Linq to Amazon
l   Linq to NHibernate
l   Linq to Flickr
l   Linq to LDAP
l   Linq to ....
Linq - Syntax
l   Beipiel Linq to Objects
public void Linq1() {
    int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
    var lowNums =
        from n in numbers
        where n < 5
        select n;
    Console.WriteLine("Numbers < 5:");
    foreach (var x in lowNums) {
        Console.WriteLine(x);
}   }
Linq - Demo



         Demo
     Linq to Objects
Linq - Syntax
l   Restriction : where
l   Grouping : group by
l   Ordering : orderby
l   Projection : select
Linq - Syntax
l   Quantifiers : Any, All
l   Aggregate : Count, Sum, Min, Max,
    Avergage, Fold
Linq - Syntax
l   Partitioning : Take, Skip, TakeWhile,
    SkipWhile
l   Set : Distinct, Union, Intersect, Except
l   Conversion : ToArray, ToList, ToDictionary,
    OfType
l   Element : First, FirstOrDefault, ElemtAt
l   Generation : Range, Repeat
Linq - Syntax
l   Beipiel Linq to SQL
MyDBContext dataContext = new MyDBContext();
var query = from kunde in dataContext.Kunden
            where kunde.StartsWith('A')
            select new {kunde.Name, Kunde.Adresse};
foreach (var k in kunde)
{
  listbox1.Items.Add(k.Name + " " + k.Adresse);
}
Linq - Demo



         Demo
      Linq to SQL
Linq - Verzögerte Ausführung
l   Der Linq-Ausdruck wird erst beim
    Zugriff auf das Ergebnis tatsächlich
    ausgewertet
    Ø   ==> Der Ausdruck kann daher
        wiederverwendet werd, auch wenn sich die
        Datenbasis geändert hat
l   Es können beliebig große Datenmengen
    verarbeitet werden, da nicht alle Daten
    gleichzeitig im Speicher sind
Linq - Weitere Quellen
l   Linq Microsoft
    Ø   http://msdn.microsoft.com/data/ref/linq/
l   101 Linq Samples
    Ø   http://msdn2.microsoft.com/en-us/vcsharp/aa336746.aspx

l   Scott Guthrie‘s Blog
    Ø   http://weblogs.asp.net/scottgu/archive/tags/LINQ/default.aspx

l   Linq to Amazon
    Ø   http://weblogs.asp.net/fmarguerie/archive/2006/06/26/Introducing-Linq-to-
        Amazon.aspx

l   Linq to SharePoint
    Ø   http://www.codeplex.com/LINQtoSharePoint
LINQ - Einheitlicher Datenzugriff in .NET

LINQ - Einheitlicher Datenzugriff in .NET

  • 1.
    Überblick LINQ Marco Seraphin MCP- MCAD - MCT Seraphin@develope-it.de Seraphin@develope-
  • 2.
    Was ist .NET l Agenda Ø Die Idee hinter Linq Ø Die verschiedenen Varianten Ø Kurze Syntax-Übersicht Ø Praktische Beispiele Ø Fazit und Ausblick
  • 3.
    Linq - DieIdee Daten != Objekte
  • 4.
    Linq - DieIdee l Leistungsstarke Backend-Systeme Ø DB, SAP, Exchange, SharePoint, BizTalk l Leistungsstarke Hochsprachen Ø C#, VB.Net, Java, Delphi Aber: Lücke bei der Datenbeschaffung im Bereich der Middleware Viel String-basiert, wenig typisiert (Connection- String, SQL Statement als String etc.)
  • 5.
    Linq - DieIdee Imperativ Deklaritiv Nicht wie, sondern was !
  • 6.
    Linq - DieIdee l Auch Daten/Informationsbeschaffung innerhalb des Programms sehr „technisch“ foreach () { for () { if (x == 5) { ... } } }
  • 7.
    Linq - DieIdee Langugage INtegrated Query
  • 8.
    Linq - DieIdee Ø First-Level Erweiterung der .Net Sprachen Ø Streng typisiert Ø IntelliSense Unterstützung in VS 2008.Net Ø Queries werden zur Laufzeit geprüft, nicht erst zur Ausführungszeit Ø Wiederverwendbarkeit von Queries (Zugriff auf Daten erfolgt erst zum Zeitpunkt auf das Ergebnis) Ø Verschiedene Ausprägungen (SQL, ADO, XML) Ø Erweiterbares Provider -Konzept (Linq-to- SharePoint, Linq-to-Amazon etc.)
  • 9.
    Linq - DieVarianten
  • 10.
    Linq - DieVarianten l Linq to Objects Ø arbeitet auf IEnumerable l Linq to XML Ø arbeitet auf XML Srtukturen l Linq to SQL Ø arbeitet auf SQL-Datenbanken Ø (Light-weight OR-Mapper) l Linq to Entities Ø ADO.Net Entity FrameWork
  • 11.
    Linq - DieVarianten l Linq to SharePoint l Linq to Amazon l Linq to NHibernate l Linq to Flickr l Linq to LDAP l Linq to ....
  • 12.
    Linq - Syntax l Beipiel Linq to Objects public void Linq1() { int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; var lowNums = from n in numbers where n < 5 select n; Console.WriteLine("Numbers < 5:"); foreach (var x in lowNums) { Console.WriteLine(x); } }
  • 13.
    Linq - Demo Demo Linq to Objects
  • 14.
    Linq - Syntax l Restriction : where l Grouping : group by l Ordering : orderby l Projection : select
  • 15.
    Linq - Syntax l Quantifiers : Any, All l Aggregate : Count, Sum, Min, Max, Avergage, Fold
  • 16.
    Linq - Syntax l Partitioning : Take, Skip, TakeWhile, SkipWhile l Set : Distinct, Union, Intersect, Except l Conversion : ToArray, ToList, ToDictionary, OfType l Element : First, FirstOrDefault, ElemtAt l Generation : Range, Repeat
  • 17.
    Linq - Syntax l Beipiel Linq to SQL MyDBContext dataContext = new MyDBContext(); var query = from kunde in dataContext.Kunden where kunde.StartsWith('A') select new {kunde.Name, Kunde.Adresse}; foreach (var k in kunde) { listbox1.Items.Add(k.Name + " " + k.Adresse); }
  • 18.
    Linq - Demo Demo Linq to SQL
  • 19.
    Linq - VerzögerteAusführung l Der Linq-Ausdruck wird erst beim Zugriff auf das Ergebnis tatsächlich ausgewertet Ø ==> Der Ausdruck kann daher wiederverwendet werd, auch wenn sich die Datenbasis geändert hat l Es können beliebig große Datenmengen verarbeitet werden, da nicht alle Daten gleichzeitig im Speicher sind
  • 20.
    Linq - WeitereQuellen l Linq Microsoft Ø http://msdn.microsoft.com/data/ref/linq/ l 101 Linq Samples Ø http://msdn2.microsoft.com/en-us/vcsharp/aa336746.aspx l Scott Guthrie‘s Blog Ø http://weblogs.asp.net/scottgu/archive/tags/LINQ/default.aspx l Linq to Amazon Ø http://weblogs.asp.net/fmarguerie/archive/2006/06/26/Introducing-Linq-to- Amazon.aspx l Linq to SharePoint Ø http://www.codeplex.com/LINQtoSharePoint