Majowa wersja LINQ wspiera DataSet i ma projektanta do DLINQ
- Tomasz Kopacz,
- 17.05.2006, godz. 20:37
LINQ to bardzo ciekawa biblioteka pozwalająca w ujednolicony sposób "zadawać" zapytania do różnych pojemników z danymi - dokumentów XML, kolekcji, baz danych itp. Mechanizm wykorzystuje koncepcje wyrażeń lambda , metod-rozszerzeń, inferencji typów i tak naprawdę jest rozszerzeniem języka - w tym przypadku C# i VB.NET.
Najważniejsze -że można będzie łączyć różne pojemniki i powiedzieć "pokaż te rekordy z bazy danych których identyfikatory są zawarte w tej kolekcji".
Składa się z 3 elementów: LINQ (obiekty), DLINQ (bazy danych), XLINQ (dokumenty XML).
Technologia po raz pierwszy pojawiła się na PDC 2005. W wersji majowej dodane zostały mechanizmy obsługujące DataSet oraz m. innymi projektant do DLINQ. DLINQ najpierw musi wygenerować odpowiednią strukturę "relacyjną" dla bazy danych by można było potem korzystać z motoru LINQ i wybierać odpowiednie podzbiory. W wersji z PDC - był dostępny tylko generator z linii poleceń; tu - jest dostępny stosowny "designer" z poziomu VS.NET 2005.
LINQ pozwala na przykład użyć takiej składni:
var namesAndOrderIDs =
customers.
Where(c => c.Country == "Denmark").
SelectMany(c => c.Orders).
Where(o => o.OrderDate.Year == 2005).
Select(o => new { o.Customer.Name, o.OrderID });
var result = from s in Process.GetProcesses()
orderby s.ProcessName
select s;
foreach (var r in result) {r ... r.PagedMemorySize64);}
var result1 = from s in Process.GetProcesses()
orderby s.ProcessName
select new {Nazwa=s.ToString()
Info = "I: " + s.ProcessName.Length};
foreach (...) {r.Nazwa ... r.Info);}
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
int oddNumbers = numbers.Count(n => n % 2 == 1);
Wersja majowa zawiera także debugger, mechanzimy wspierające data binding oraz łatwo ją można użyć z poziomu ASP.NET. Warto dodać, że te wszystkie mechanizmy działają na tym samym runtime co .NET 2.0 (nie zmienia się wersja MSIL).
Aby ściągnąć wersję LINQ należy pobrać:http://www.microsoft.com/downloads/details.aspx?familyid=1e902c21-340c-4d13-9f04-70eb5e3dceea&displaylang=en