LINQ - Einheitlicher Datenzugriff in .NET

21
Ü Ü berblick berblick LINQ LINQ Marco Marco Seraphin Seraphin MCP MCP - MCAD MCAD - MCT MCT Seraphin Seraphin@develope develope-it.de it.de

description

Auch mit Objektorientierung gibt es immer noch eine große Kluft zwischen Programmen, die in einer Hochsprache geschrieben wurden und den Daten, die diese Programme bearbeiten. In Hochsprachen wie C# oder VB verwenden Entwickler spezialisierte Datentypen, Objekte, Methodenaufrufe und hochgradig optimierte Compiler, während beim Datenzugriff alles auf ein paar Strings reduziert wird, die SQL-Abfragen beinhalten. Entwickler arbeiten hierbei mit zwei total unterschiedlichen Paradigmen (Syntax von SQL und der bevorzugten Programmiersprache) sowie Typsystemen und konvertieren also ständig Daten zwischen zwei verschiedenen Domänen. Diese Unstimmigkeit ist Ursache für menschliche Fehler und verschwendet Zeit. LINQ ist Microsoft Antwort auf dieses Dilemma. Die Veranstaltung zeigt die Konzepte und Möglichkeiten der neuen .NET-Schnittstelle. Die Idee hinter LINQ Die verschiedenen Varianten - LINQ to Objects - LINQ to SQL - LINQ to DataSet - LINQ to XML - LINQ to Entity - LINQ to ..... Kurze Syntax-Übersicht Praktische Beispiele LINQ To Objects Kurz-Video LINQ to SQL Fazit und Ausblick

Transcript of LINQ - Einheitlicher Datenzugriff in .NET

Page 1: LINQ - Einheitlicher Datenzugriff in .NET

ÜÜberblickberblick LINQLINQ

MarcoMarco SeraphinSeraphinMCP MCP -- MCAD MCAD -- MCTMCT

SeraphinSeraphin@@developedevelope--it.deit.de

Page 2: LINQ - Einheitlicher Datenzugriff in .NET

WasWas istist .NET.NET

ll AgendaAgenda

ØØ Die Idee hinterDie Idee hinter LinqLinqØØ DieDie verschiedenen Variantenverschiedenen VariantenØØ KurzeKurze SyntaxSyntax--ÜÜbersichtbersichtØØ Praktische BeispielePraktische BeispieleØØ Fazit und AusblickFazit und Ausblick

Page 3: LINQ - Einheitlicher Datenzugriff in .NET

LinqLinq -- Die IdeeDie Idee

DatenDaten !=!= ObjekteObjekte

Page 4: LINQ - Einheitlicher Datenzugriff in .NET

LinqLinq -- Die IdeeDie Idee

ll LeistungsstarkeLeistungsstarke BackendBackend--SystemeSystemeØØ DBDB, SAP, Exchange,, SAP, Exchange, SharePointSharePoint,, BizTalkBizTalk

ll Leistungsstarke HochsprachenLeistungsstarke HochsprachenØØ C#, VB.Net, Java, DelphiC#, VB.Net, Java, Delphi

AberAber::LLüücke bei der Datenbeschaffung im Bereich cke bei der Datenbeschaffung im Bereich der Middlewareder Middleware

VielViel StringString--basiertbasiert,, wenig typisiertwenig typisiert (Connection(Connection--String, SQL StatementString, SQL Statement alsals String etc.)String etc.)

Page 5: LINQ - Einheitlicher Datenzugriff in .NET

LinqLinq -- Die IdeeDie Idee

Imperativ DeklaritivImperativ Deklaritiv

Nicht wieNicht wie,, sondernsondern was !was !

Page 6: LINQ - Einheitlicher Datenzugriff in .NET

LinqLinq -- Die IdeeDie Idee

ll Auch DatenAuch Daten//Informationsbeschaffung Informationsbeschaffung innerhalb des Programms sehrinnerhalb des Programms sehr„„technischtechnisch““

foreachforeach ()(){{for ()for (){{

if (x == 5)if (x == 5){{

......}}

}}}}

Page 7: LINQ - Einheitlicher Datenzugriff in .NET

LinqLinq -- Die IdeeDie Idee

LLangugage angugage ININtegratedtegrated QQueryuery

Page 8: LINQ - Einheitlicher Datenzugriff in .NET

LinqLinq -- Die IdeeDie Idee

ØØ FirstFirst--LevelLevel Erweiterung derErweiterung der .Net.Net SprachenSprachenØØ Streng typisiertStreng typisiertØØ IntelliSenseIntelliSense UnterstUnterstüützungtzung in VS 2008.Netin VS 2008.NetØØ QueriesQueries werden zur Laufzeit geprwerden zur Laufzeit geprüüftft,, nicht nicht

erst zur Ausferst zur AusfüührungszeithrungszeitØØ Wiederverwendbarkeit vonWiederverwendbarkeit von Queries (Queries (Zugriff Zugriff

auf Daten erfolgt erst zum Zeitpunkt auf auf Daten erfolgt erst zum Zeitpunkt auf das Ergebnisdas Ergebnis))

ØØ Verschiedene AusprVerschiedene Auspräägungengungen (SQL, ADO, (SQL, ADO, XML)XML)

ØØ ErweiterbaresErweiterbares ProviderProvider--KonzeptKonzept ((LinqLinq--toto--SharePointSharePoint,, LinqLinq--toto--Amazon etc.)Amazon etc.)

Page 9: LINQ - Einheitlicher Datenzugriff in .NET

LinqLinq -- DieDie VariantenVarianten

Page 10: LINQ - Einheitlicher Datenzugriff in .NET

LinqLinq -- DieDie VariantenVarianten

ll LinqLinq to Objectsto ObjectsØØ arbeitet auf IEnumerablearbeitet auf IEnumerable

ll LinqLinq to XMLto XMLØØ arbeitet aufarbeitet auf XMLXML SrtukturenSrtukturen

ll LinqLinq to SQLto SQLØØ arbeitet aufarbeitet auf SQLSQL--DatenbankenDatenbankenØØ (Light(Light--weight ORweight OR--MapperMapper))

ll LinqLinq to Entitiesto EntitiesØØ ADO.Net EntityADO.Net Entity FrameWorkFrameWork

Page 11: LINQ - Einheitlicher Datenzugriff in .NET

LinqLinq -- DieDie VariantenVarianten

ll LinqLinq toto SharePointSharePointll LinqLinq to Amazonto Amazonll LinqLinq toto NHibernateNHibernatell LinqLinq toto FlickrFlickrll LinqLinq to LDAPto LDAPll LinqLinq to ....to ....

Page 12: LINQ - Einheitlicher Datenzugriff in .NET

LinqLinq -- SyntaxSyntax

ll Beipiel LinqBeipiel Linq to Objectsto Objects

public void Linq1() {int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };var lowNums =

from n in numberswhere n < 5select n;

Console.WriteLine("Numbers < 5:");foreach (var x in lowNums) {

Console.WriteLine(x);}}

Page 13: LINQ - Einheitlicher Datenzugriff in .NET

LinqLinq -- DemoDemo

DemoDemoLinqLinq to Objectsto Objects

Page 14: LINQ - Einheitlicher Datenzugriff in .NET

LinqLinq -- SyntaxSyntax

ll Restriction : Restriction : wherewherell Grouping : Grouping : group bygroup byll Ordering :Ordering : orderbyorderbyll Projection : Projection : selectselect

Page 15: LINQ - Einheitlicher Datenzugriff in .NET

LinqLinq -- SyntaxSyntax

ll Quantifiers : Quantifiers : Any, AllAny, Allll Aggregate : Aggregate : Count, Sum, Min, Max,Count, Sum, Min, Max,

AvergageAvergage, Fold, Fold

Page 16: LINQ - Einheitlicher Datenzugriff in .NET

LinqLinq -- SyntaxSyntax

ll Partitioning : Partitioning : Take, Skip,Take, Skip, TakeWhileTakeWhile,,SkipWhileSkipWhile

ll Set : Set : Distinct, Union, Intersect, ExceptDistinct, Union, Intersect, Except

ll Conversion :Conversion : ToArrayToArray,, ToListToList,, ToDictionaryToDictionary,,OfTypeOfType

ll Element : Element : First,First, FirstOrDefaultFirstOrDefault,, ElemtAtElemtAt

ll Generation : Generation : Range, RepeatRange, Repeat

Page 17: LINQ - Einheitlicher Datenzugriff in .NET

LinqLinq -- SyntaxSyntax

ll Beipiel LinqBeipiel Linq to SQLto 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);

}

Page 18: LINQ - Einheitlicher Datenzugriff in .NET

LinqLinq -- DemoDemo

DemoDemoLinqLinq to SQLto SQL

Page 19: LINQ - Einheitlicher Datenzugriff in .NET

LinqLinq -- VerzVerzöögerte Ausfgerte Ausfüührunghrung

ll Der LinqDer Linq--Ausdruck wird erst beim Ausdruck wird erst beim Zugriff auf das Ergebnis tatsZugriff auf das Ergebnis tatsäächlich chlich ausgewertetausgewertetØØ ==>==> Der Ausdruck kann daher Der Ausdruck kann daher

wiederverwendet werdwiederverwendet werd,, auch wenn sichauch wenn sich diedieDatenbasis geDatenbasis geäändertndert hathat

ll EsEs kköönnen beliebig gronnen beliebig großße Datenmengen e Datenmengen verarbeitet werdenverarbeitet werden,, da nicht alle Daten da nicht alle Daten gleichzeitig im Speicher sindgleichzeitig im Speicher sind

Page 20: LINQ - Einheitlicher Datenzugriff in .NET

LinqLinq -- Weitere QuellenWeitere Quellen

ll LinqLinq MicrosoftMicrosoftØ http://msdn.microsoft.com/data/ref/linq/

ll 101101 LinqLinq SamplesSamplesØ http://msdn2.microsoft.com/en-us/vcsharp/aa336746.aspx

ll ScottScott GuthrieGuthrie‘‘ss BlogBlogØ http://weblogs.asp.net/scottgu/archive/tags/LINQ/default.aspx

ll LinqLinq to Amazonto AmazonØ http://weblogs.asp.net/fmarguerie/archive/2006/06/26/Introducing-Linq-to-

Amazon.aspx

ll LinqLinq toto SharePointSharePointØ http://www.codeplex.com/LINQtoSharePoint

Page 21: LINQ - Einheitlicher Datenzugriff in .NET