LINQ - Einheitlicher Datenzugriff in .NET
-
Upload
gfu-cyrus-ag -
Category
Technology
-
view
1.790 -
download
5
description
Transcript of LINQ - Einheitlicher Datenzugriff in .NET
ÜÜberblickberblick LINQLINQ
MarcoMarco SeraphinSeraphinMCP MCP -- MCAD MCAD -- MCTMCT
SeraphinSeraphin@@developedevelope--it.deit.de
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
LinqLinq -- Die IdeeDie Idee
DatenDaten !=!= ObjekteObjekte
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.)
LinqLinq -- Die IdeeDie Idee
Imperativ DeklaritivImperativ Deklaritiv
Nicht wieNicht wie,, sondernsondern was !was !
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){{
......}}
}}}}
LinqLinq -- Die IdeeDie Idee
LLangugage angugage ININtegratedtegrated QQueryuery
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.)
LinqLinq -- DieDie VariantenVarianten
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
LinqLinq -- DieDie VariantenVarianten
ll LinqLinq toto SharePointSharePointll LinqLinq to Amazonto Amazonll LinqLinq toto NHibernateNHibernatell LinqLinq toto FlickrFlickrll LinqLinq to LDAPto LDAPll LinqLinq to ....to ....
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);}}
LinqLinq -- DemoDemo
DemoDemoLinqLinq to Objectsto Objects
LinqLinq -- SyntaxSyntax
ll Restriction : Restriction : wherewherell Grouping : Grouping : group bygroup byll Ordering :Ordering : orderbyorderbyll Projection : Projection : selectselect
LinqLinq -- SyntaxSyntax
ll Quantifiers : Quantifiers : Any, AllAny, Allll Aggregate : Aggregate : Count, Sum, Min, Max,Count, Sum, Min, Max,
AvergageAvergage, Fold, Fold
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
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);
}
LinqLinq -- DemoDemo
DemoDemoLinqLinq to SQLto SQL
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
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