130 likes | 301 Views
The LINQ Project. Rafał Skoczylas. Plan prezentacji. Co to jest LINQ? Przykłady Podsumowanie LINQ-i ;). Co to jest LINQ? (1/2). W tradycyjnym podejściu: zapytania SQL pisze się w cudzysłowach brak sprawdzania poprawności w czasie kompilacji brak mocnego typowania
E N D
The LINQ Project Rafał Skoczylas
Plan prezentacji • Co to jest LINQ? • Przykłady • Podsumowanie • LINQ-i ;)
Co to jest LINQ? (1/2) • W tradycyjnym podejściu: • zapytania SQL pisze się w cudzysłowach • brak sprawdzania poprawności w czasie kompilacji • brak mocnego typowania • brak podpowiadania kodu (IntelliSense itp.) • i wiele innych braków oraz problemów
Co to jest LINQ? (2/2) • LINQ - Language INtegrated Query – nowy projekt Andersa Hejlsberga • Zapytania stają się częścią języka • Zunifikowany sposób dostępu do • Obiektów (IEnumerable) • Baz Danych • XML
Przykład: Kolekcje i zapytania using System.Query; [...] Student[] students = School.GetStudents(); // query methods var q1 = students. where(s => s.Age ==23). select(s => s.Name); // query expressions var q2 = fromsinstudents wheres.Age ==23 selects.Name;
Przykład: Projekcje [...] Student[] students = School.GetStudents(); var q1 = fromsinstudents wheres.Avg>= 4.75 select newScholarship(s.AlbumNumber, s.Avg); var q2 = fromsinstudents wheres.Avg>= 4.75 select new { s.AlbumNumber, s.Avg }; foreach (var s in q2) Console.WriteLine(s.AlbumNumber);
Przykład: Baza Danych using System.Data.DLinq; Northwind db = newNorthWind(@"F:\northwind.mdf"); var q = from c in db.Customers where c.City == "London" select c.CompanyName;
Przykład: XML (1/2) using System.Xml.XLinq; XElement e = newXElement("LibraryList", newXElement("Library", new XAttribute("Name", "PJWSTK") ) ); <LibraryList> <Library Name="PJWSTK" /> </LibraryList>
Przykład: XML (2a/2) using System.Xml.XLinq; Student[] students = School.GetStudents(); XElement e = newXElement("Stypendia", from s in students where s.Avg >= 4.75 select newXElement("Student", newXAttribute("NumerIndeksu", s.AlbumNumber), newXAttribute("Średnia", s.Avg) ) );
Przykład: XML (2b/2) <Stypendia> <Student NumerIndeksu="1239" Srednia="4.77" /> <Student NumerIndeksu="1543" Srednia="4.82" /> <Student NumerIndeksu="1731" Srednia="4.79" /> <Student NumerIndeksu="1832" Srednia="4.98" /> <Student NumerIndeksu="2534" Srednia="4.76" /> <Student NumerIndeksu="2374" Srednia="4.99" /> [...] </Stypendia>
Przykład: Tips and Tricks var q1 = fromcinthis.Controls wherec.Enabled == false selectc;
Podsumowanie • Słuszny kierunek na przyszłość • Wiele mechanizmów zapożyczonych z innych technologii: • FoxPro • Ruby • Python • LISP • Delphi
LINQ-i ;) • The LINQ Projecthttp://msdn.microsoft.com/netframework/future/linq/ • C# LINQ Tech Preview Update for Visual Studio 2005 RTM Release • C# 3.0 Language Specification • 101 LINQ Sampleshttp://msdn.microsoft.com/vcsharp/future/linqsamples/ • Anders Hejlsberghttp://en.wikipedia.org/wiki/Anders_Hejlsberg