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
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)
{
...
}
}
}
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.)
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);
} }
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);
}
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