SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
Ü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

Mais conteúdo relacionado

Semelhante a LINQ - Einheitlicher Datenzugriff in .NET

20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatengeKarin Patenge
 
Einfuehrung in Apache Spark
Einfuehrung in Apache SparkEinfuehrung in Apache Spark
Einfuehrung in Apache SparkJens Albrecht
 
Nigh Session Scala
Nigh Session ScalaNigh Session Scala
Nigh Session Scalaadesso AG
 
Semantic Web Technologies - SS 2010 - 05 - RDF(S) Frameworks
Semantic Web Technologies - SS 2010 - 05 - RDF(S) FrameworksSemantic Web Technologies - SS 2010 - 05 - RDF(S) Frameworks
Semantic Web Technologies - SS 2010 - 05 - RDF(S) FrameworksSteffen Schloenvoigt
 
Architektur einer Eclipse DLTK IDE für Clojure
Architektur einer Eclipse DLTK IDE für ClojureArchitektur einer Eclipse DLTK IDE für Clojure
Architektur einer Eclipse DLTK IDE für ClojureMatthias Köster
 
Let's talk about Java EE
Let's talk about Java EELet's talk about Java EE
Let's talk about Java EEAndreas König
 
Einführung in .NET mit C#
Einführung in .NET mit C#Einführung in .NET mit C#
Einführung in .NET mit C#mspgermany
 
OSMC 2009 | LDAP2Nagios - LDAP als Backend für die Objektkonfiguration by Mic...
OSMC 2009 | LDAP2Nagios - LDAP als Backend für die Objektkonfiguration by Mic...OSMC 2009 | LDAP2Nagios - LDAP als Backend für die Objektkonfiguration by Mic...
OSMC 2009 | LDAP2Nagios - LDAP als Backend für die Objektkonfiguration by Mic...NETWAYS
 
BASTA! Spring 2017 - C# Script in Action
BASTA! Spring 2017 - C# Script in ActionBASTA! Spring 2017 - C# Script in Action
BASTA! Spring 2017 - C# Script in ActionRobin Sedlaczek
 
Analytics meets Big Data – R/Python auf der Hadoop/Spark-Plattform
Analytics meets Big Data – R/Python auf der Hadoop/Spark-PlattformAnalytics meets Big Data – R/Python auf der Hadoop/Spark-Plattform
Analytics meets Big Data – R/Python auf der Hadoop/Spark-PlattformRising Media Ltd.
 
OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...
OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...
OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...AWS Germany
 
Das ist doch alles nur Frontend - Wer braucht da schon Architektur?
Das ist doch alles nur Frontend - Wer braucht da schon Architektur?Das ist doch alles nur Frontend - Wer braucht da schon Architektur?
Das ist doch alles nur Frontend - Wer braucht da schon Architektur?OPEN KNOWLEDGE GmbH
 
MongoDB: Entwurfsmuster für das NoSQL-Schema-Design
MongoDB: Entwurfsmuster für das NoSQL-Schema-DesignMongoDB: Entwurfsmuster für das NoSQL-Schema-Design
MongoDB: Entwurfsmuster für das NoSQL-Schema-DesignGregor Biswanger
 
Mit agilen Praktiken SOLIDe Systeme bauen
Mit agilen Praktiken SOLIDe Systeme bauenMit agilen Praktiken SOLIDe Systeme bauen
Mit agilen Praktiken SOLIDe Systeme bauenSven Günther
 
LAIK: A Library for Fault Tolerant Distribution of Global Data
LAIK: A Library for Fault Tolerant Distribution of Global DataLAIK: A Library for Fault Tolerant Distribution of Global Data
LAIK: A Library for Fault Tolerant Distribution of Global DataDai Yang
 
Java und Go im Vergleich
Java und Go im VergleichJava und Go im Vergleich
Java und Go im VergleichQAware GmbH
 
Citrix Day 2014: Panalpina - global und doch nah
Citrix Day 2014: Panalpina - global und doch nahCitrix Day 2014: Panalpina - global und doch nah
Citrix Day 2014: Panalpina - global und doch nahDigicomp Academy AG
 
Seit 10 Jahren mit Python: Quantax, ein Risk-Management-System für Banken
Seit 10 Jahren mit Python: Quantax, ein Risk-Management-System für Banken Seit 10 Jahren mit Python: Quantax, ein Risk-Management-System für Banken
Seit 10 Jahren mit Python: Quantax, ein Risk-Management-System für Banken Martin Gfeller
 
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)nwilbert
 

Semelhante a LINQ - Einheitlicher Datenzugriff in .NET (20)

20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
 
Einfuehrung in Apache Spark
Einfuehrung in Apache SparkEinfuehrung in Apache Spark
Einfuehrung in Apache Spark
 
Nigh Session Scala
Nigh Session ScalaNigh Session Scala
Nigh Session Scala
 
Semantic Web Technologies - SS 2010 - 05 - RDF(S) Frameworks
Semantic Web Technologies - SS 2010 - 05 - RDF(S) FrameworksSemantic Web Technologies - SS 2010 - 05 - RDF(S) Frameworks
Semantic Web Technologies - SS 2010 - 05 - RDF(S) Frameworks
 
Architektur einer Eclipse DLTK IDE für Clojure
Architektur einer Eclipse DLTK IDE für ClojureArchitektur einer Eclipse DLTK IDE für Clojure
Architektur einer Eclipse DLTK IDE für Clojure
 
Let's talk about Java EE
Let's talk about Java EELet's talk about Java EE
Let's talk about Java EE
 
Einführung in .NET mit C#
Einführung in .NET mit C#Einführung in .NET mit C#
Einführung in .NET mit C#
 
OSMC 2009 | LDAP2Nagios - LDAP als Backend für die Objektkonfiguration by Mic...
OSMC 2009 | LDAP2Nagios - LDAP als Backend für die Objektkonfiguration by Mic...OSMC 2009 | LDAP2Nagios - LDAP als Backend für die Objektkonfiguration by Mic...
OSMC 2009 | LDAP2Nagios - LDAP als Backend für die Objektkonfiguration by Mic...
 
BASTA! Spring 2017 - C# Script in Action
BASTA! Spring 2017 - C# Script in ActionBASTA! Spring 2017 - C# Script in Action
BASTA! Spring 2017 - C# Script in Action
 
Analytics meets Big Data – R/Python auf der Hadoop/Spark-Plattform
Analytics meets Big Data – R/Python auf der Hadoop/Spark-PlattformAnalytics meets Big Data – R/Python auf der Hadoop/Spark-Plattform
Analytics meets Big Data – R/Python auf der Hadoop/Spark-Plattform
 
OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...
OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...
OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...
 
Cloud Haskell
Cloud HaskellCloud Haskell
Cloud Haskell
 
Das ist doch alles nur Frontend - Wer braucht da schon Architektur?
Das ist doch alles nur Frontend - Wer braucht da schon Architektur?Das ist doch alles nur Frontend - Wer braucht da schon Architektur?
Das ist doch alles nur Frontend - Wer braucht da schon Architektur?
 
MongoDB: Entwurfsmuster für das NoSQL-Schema-Design
MongoDB: Entwurfsmuster für das NoSQL-Schema-DesignMongoDB: Entwurfsmuster für das NoSQL-Schema-Design
MongoDB: Entwurfsmuster für das NoSQL-Schema-Design
 
Mit agilen Praktiken SOLIDe Systeme bauen
Mit agilen Praktiken SOLIDe Systeme bauenMit agilen Praktiken SOLIDe Systeme bauen
Mit agilen Praktiken SOLIDe Systeme bauen
 
LAIK: A Library for Fault Tolerant Distribution of Global Data
LAIK: A Library for Fault Tolerant Distribution of Global DataLAIK: A Library for Fault Tolerant Distribution of Global Data
LAIK: A Library for Fault Tolerant Distribution of Global Data
 
Java und Go im Vergleich
Java und Go im VergleichJava und Go im Vergleich
Java und Go im Vergleich
 
Citrix Day 2014: Panalpina - global und doch nah
Citrix Day 2014: Panalpina - global und doch nahCitrix Day 2014: Panalpina - global und doch nah
Citrix Day 2014: Panalpina - global und doch nah
 
Seit 10 Jahren mit Python: Quantax, ein Risk-Management-System für Banken
Seit 10 Jahren mit Python: Quantax, ein Risk-Management-System für Banken Seit 10 Jahren mit Python: Quantax, ein Risk-Management-System für Banken
Seit 10 Jahren mit Python: Quantax, ein Risk-Management-System für Banken
 
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
 

Mais de GFU Cyrus AG

Social Media im Unternehmen
Social Media im UnternehmenSocial Media im Unternehmen
Social Media im UnternehmenGFU Cyrus AG
 
Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...
Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...
Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...GFU Cyrus AG
 
Clean Code Developer
Clean Code DeveloperClean Code Developer
Clean Code DeveloperGFU Cyrus AG
 
Cross-Apps-Entwicklung für iPhone, Android und Co.
Cross-Apps-Entwicklung für iPhone, Android und Co.Cross-Apps-Entwicklung für iPhone, Android und Co.
Cross-Apps-Entwicklung für iPhone, Android und Co.GFU Cyrus AG
 
Softwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration ToolsSoftwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration ToolsGFU Cyrus AG
 
Datenschutz bei Facebook & Co. - Wie schütze ich meine persönlichen Daten im ...
Datenschutz bei Facebook & Co. - Wie schütze ich meine persönlichen Daten im ...Datenschutz bei Facebook & Co. - Wie schütze ich meine persönlichen Daten im ...
Datenschutz bei Facebook & Co. - Wie schütze ich meine persönlichen Daten im ...GFU Cyrus AG
 
Requirements Engineering in agilen Projekten - Flexibilität ist gefordert
Requirements Engineering in agilen Projekten - Flexibilität ist gefordertRequirements Engineering in agilen Projekten - Flexibilität ist gefordert
Requirements Engineering in agilen Projekten - Flexibilität ist gefordertGFU Cyrus AG
 
SharePoint 2010 - Was ist neu, was wird besser!
SharePoint 2010 - Was ist neu, was wird besser!SharePoint 2010 - Was ist neu, was wird besser!
SharePoint 2010 - Was ist neu, was wird besser!GFU Cyrus AG
 
Java Persistence 2.0
Java Persistence 2.0Java Persistence 2.0
Java Persistence 2.0GFU Cyrus AG
 
Pragmatische Einführung von IT-Servicemanagement - ITIL im Unternehmen - Erfa...
Pragmatische Einführung von IT-Servicemanagement - ITIL im Unternehmen - Erfa...Pragmatische Einführung von IT-Servicemanagement - ITIL im Unternehmen - Erfa...
Pragmatische Einführung von IT-Servicemanagement - ITIL im Unternehmen - Erfa...GFU Cyrus AG
 
Liferay Portal - ein Webportal für viele Unternehmensanforderungen
Liferay Portal - ein Webportal für viele UnternehmensanforderungenLiferay Portal - ein Webportal für viele Unternehmensanforderungen
Liferay Portal - ein Webportal für viele UnternehmensanforderungenGFU Cyrus AG
 
PostgreSQL im Produktivbetrieb
PostgreSQL im ProduktivbetriebPostgreSQL im Produktivbetrieb
PostgreSQL im ProduktivbetriebGFU Cyrus AG
 
Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Weba...
Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Weba...Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Weba...
Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Weba...GFU Cyrus AG
 
Wieviel Web2.0 braucht Ihr Unternehmen?
Wieviel Web2.0 braucht Ihr Unternehmen?Wieviel Web2.0 braucht Ihr Unternehmen?
Wieviel Web2.0 braucht Ihr Unternehmen?GFU Cyrus AG
 
Neue Features der Java EE 6
Neue Features der Java EE 6Neue Features der Java EE 6
Neue Features der Java EE 6GFU Cyrus AG
 
Das Java-Spring-Framework in der Praxis
Das Java-Spring-Framework in der PraxisDas Java-Spring-Framework in der Praxis
Das Java-Spring-Framework in der PraxisGFU Cyrus AG
 
Agile Geschäftsprozeßanalyse OOA/D am Beispiel einer Seminarverwaltung
Agile Geschäftsprozeßanalyse OOA/D am Beispiel einer SeminarverwaltungAgile Geschäftsprozeßanalyse OOA/D am Beispiel einer Seminarverwaltung
Agile Geschäftsprozeßanalyse OOA/D am Beispiel einer SeminarverwaltungGFU Cyrus AG
 
Wissensmanagement bei Volkswagen
Wissensmanagement bei VolkswagenWissensmanagement bei Volkswagen
Wissensmanagement bei VolkswagenGFU Cyrus AG
 
Professionelle Anforderungsanalyse am Beispiel einer Java-Anwendung zur Betri...
Professionelle Anforderungsanalyse am Beispiel einer Java-Anwendung zur Betri...Professionelle Anforderungsanalyse am Beispiel einer Java-Anwendung zur Betri...
Professionelle Anforderungsanalyse am Beispiel einer Java-Anwendung zur Betri...GFU Cyrus AG
 
Grenzüberschreitende Geschäftsprozesse mit Microsoft SharePoint und BizTalk
Grenzüberschreitende Geschäftsprozesse mit Microsoft SharePoint und BizTalkGrenzüberschreitende Geschäftsprozesse mit Microsoft SharePoint und BizTalk
Grenzüberschreitende Geschäftsprozesse mit Microsoft SharePoint und BizTalkGFU Cyrus AG
 

Mais de GFU Cyrus AG (20)

Social Media im Unternehmen
Social Media im UnternehmenSocial Media im Unternehmen
Social Media im Unternehmen
 
Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...
Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...
Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...
 
Clean Code Developer
Clean Code DeveloperClean Code Developer
Clean Code Developer
 
Cross-Apps-Entwicklung für iPhone, Android und Co.
Cross-Apps-Entwicklung für iPhone, Android und Co.Cross-Apps-Entwicklung für iPhone, Android und Co.
Cross-Apps-Entwicklung für iPhone, Android und Co.
 
Softwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration ToolsSoftwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration Tools
 
Datenschutz bei Facebook & Co. - Wie schütze ich meine persönlichen Daten im ...
Datenschutz bei Facebook & Co. - Wie schütze ich meine persönlichen Daten im ...Datenschutz bei Facebook & Co. - Wie schütze ich meine persönlichen Daten im ...
Datenschutz bei Facebook & Co. - Wie schütze ich meine persönlichen Daten im ...
 
Requirements Engineering in agilen Projekten - Flexibilität ist gefordert
Requirements Engineering in agilen Projekten - Flexibilität ist gefordertRequirements Engineering in agilen Projekten - Flexibilität ist gefordert
Requirements Engineering in agilen Projekten - Flexibilität ist gefordert
 
SharePoint 2010 - Was ist neu, was wird besser!
SharePoint 2010 - Was ist neu, was wird besser!SharePoint 2010 - Was ist neu, was wird besser!
SharePoint 2010 - Was ist neu, was wird besser!
 
Java Persistence 2.0
Java Persistence 2.0Java Persistence 2.0
Java Persistence 2.0
 
Pragmatische Einführung von IT-Servicemanagement - ITIL im Unternehmen - Erfa...
Pragmatische Einführung von IT-Servicemanagement - ITIL im Unternehmen - Erfa...Pragmatische Einführung von IT-Servicemanagement - ITIL im Unternehmen - Erfa...
Pragmatische Einführung von IT-Servicemanagement - ITIL im Unternehmen - Erfa...
 
Liferay Portal - ein Webportal für viele Unternehmensanforderungen
Liferay Portal - ein Webportal für viele UnternehmensanforderungenLiferay Portal - ein Webportal für viele Unternehmensanforderungen
Liferay Portal - ein Webportal für viele Unternehmensanforderungen
 
PostgreSQL im Produktivbetrieb
PostgreSQL im ProduktivbetriebPostgreSQL im Produktivbetrieb
PostgreSQL im Produktivbetrieb
 
Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Weba...
Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Weba...Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Weba...
Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Weba...
 
Wieviel Web2.0 braucht Ihr Unternehmen?
Wieviel Web2.0 braucht Ihr Unternehmen?Wieviel Web2.0 braucht Ihr Unternehmen?
Wieviel Web2.0 braucht Ihr Unternehmen?
 
Neue Features der Java EE 6
Neue Features der Java EE 6Neue Features der Java EE 6
Neue Features der Java EE 6
 
Das Java-Spring-Framework in der Praxis
Das Java-Spring-Framework in der PraxisDas Java-Spring-Framework in der Praxis
Das Java-Spring-Framework in der Praxis
 
Agile Geschäftsprozeßanalyse OOA/D am Beispiel einer Seminarverwaltung
Agile Geschäftsprozeßanalyse OOA/D am Beispiel einer SeminarverwaltungAgile Geschäftsprozeßanalyse OOA/D am Beispiel einer Seminarverwaltung
Agile Geschäftsprozeßanalyse OOA/D am Beispiel einer Seminarverwaltung
 
Wissensmanagement bei Volkswagen
Wissensmanagement bei VolkswagenWissensmanagement bei Volkswagen
Wissensmanagement bei Volkswagen
 
Professionelle Anforderungsanalyse am Beispiel einer Java-Anwendung zur Betri...
Professionelle Anforderungsanalyse am Beispiel einer Java-Anwendung zur Betri...Professionelle Anforderungsanalyse am Beispiel einer Java-Anwendung zur Betri...
Professionelle Anforderungsanalyse am Beispiel einer Java-Anwendung zur Betri...
 
Grenzüberschreitende Geschäftsprozesse mit Microsoft SharePoint und BizTalk
Grenzüberschreitende Geschäftsprozesse mit Microsoft SharePoint und BizTalkGrenzüberschreitende Geschäftsprozesse mit Microsoft SharePoint und BizTalk
Grenzüberschreitende Geschäftsprozesse mit Microsoft SharePoint und BizTalk
 

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 - Die Idee Daten != Objekte
  • 4. 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.)
  • 5. Linq - Die Idee Imperativ Deklaritiv Nicht wie, sondern was !
  • 6. Linq - Die Idee l Auch Daten/Informationsbeschaffung innerhalb des Programms sehr „technisch“ foreach () { for () { if (x == 5) { ... } } }
  • 7. Linq - Die Idee Langugage INtegrated Query
  • 8. 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.)
  • 9. Linq - Die Varianten
  • 10. 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
  • 11. 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 ....
  • 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ö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
  • 20. 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