1 / 17

LINQ Project

LINQ Project. .NET Language Integrated Query Hubert Górniak. Plan prezentacji. Wstęp Pomysł na LINQ Prosty przykład Lambda expressions Inicjalizacja złożonych wartości Integracja z SQL (DLinq) Podsumowanie. Wstęp. LINQ definiuje standardowe operatory kwerend

pooky
Download Presentation

LINQ Project

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. LINQ Project .NET Language Integrated Query Hubert Górniak

  2. Plan prezentacji • Wstęp • Pomysł na LINQ • Prosty przykład • Lambda expressions • Inicjalizacja złożonych wartości • Integracja z SQL (DLinq) • Podsumowanie

  3. Wstęp • LINQ definiuje standardowe operatory kwerend • Umożliwia językom filtrowanie, enumeracje i tworzenie projekcji różnych kolekcji używając tej samej składni

  4. Pomysł na LINQ • Programując obiektowo używamy klas, obiektów i metod • Używamy informacji z różnych źródeł • LINQ to uproszczenie i ujednolicenie dostępu i integracji do informacji nieobiektowej • Najczęściej do relacyjnych baz danych i plików XML

  5. Pomysł na LINQ • Zamiast dodawać relacyjne lub XML’ owe właściwości do naszych programów używamy ułatwień w postaci ogólnych kwerend

  6. Prosty przykład • Używając standardowych operatorów kwerend w C# 3.0: using System; using System.Query; using System.Collections.Generic; class app { static void Main() { string[] names = { "Burke", "Connor", "Frank", "Everett", "Albert", "George", "Harris", "David" }; IEnumerable<string> expr = from s in names where s.Length == 5 orderby s select s.ToUpper(); foreach (string item in expr) Console.WriteLine(item); } } • Po przetworzeniu tablicy otrzymujemy: BURKE DAVID FRANK

  7. Prosty przykład • Inicjalizacja zmiennej przez query expression • Query expression przetwarza jedno lub wiele źródeł danych używając różnych query operators • Wyrażenie w przykładzie używa operatorów: • Where • OrderBy • Select • Wyrażenie napisane jest w query syntax

  8. Prosty przykład • Możliwe jest zapisanie wyrażenie w składni z „.” IEnumerable<string> expr = names .Where(s => s.Length == 5) .OrderBy(s => s) .Select(s => s.ToUpper()); • Argumenty operatorów nazywane są lambda expressions

  9. Lambda expressions • Operatory umożliwiają użycie funkcji jako argumentów Func<string, bool> filter = s => s.Length == 5; Func<string, string> extract = s => s; Func<string, string> project = s => s.ToUpper(); IEnumerable<string> expr = names .Where(filter) .OrderBy(extract) .Select(project);

  10. Lambda expressions • Podobne do metod anonimowych Func<string, bool> filter = delegate (string s) { return s.Length == 5; }; Func<string, string> extract = delegate (string s) { return s; }; Func<string, string> project = delegate (string s) { return s.ToUpper(); };

  11. Inicjalizacja złożonych wartości • Zakładając że dany jest typ: public class Person { string name; int age; bool canCode; public string Name { get { return name; } set { name = value; } } public int Age { get { return age; } set { age = value; } } public bool CanCode { get { return canCode; } set { canCode = value; } } } Możemy dokonać inicjalizacji w następujący sposób: Person value = new Person { Name = "Chris Smith", Age = 31, CanCode = false };

  12. Integracja z SQL (DLinq) • Możliwość tworzenia zapytań do relacyjnych źródeł • W środowisku projektowym • Atrybuty [Table] i [Column] definiują typy CLR odpowiadające definicjom SQL Schema

  13. Integracja z SQL (DLinq) • Możliwość tworzenia zapytań do relacyjnych źródeł

  14. Integracja z SQL (DLinq) • Przykładowa definicja SQL: create table People ( Name nvarchar(32) primary key not null, Age int not null, CanCode bit not null ) create table Orders ( OrderID nvarchar(32) primary key not null, Customer nvarchar(32) not null, Amount int )

  15. Integracja z SQL (DLinq) • Jedyne czego potrzebujemy to: [Table(Name="People")] public class Person { [Column(DbType="nvarchar(32) not null", Id=true)] public string Name; [Column] public int Age; [Column] public bool CanCode; } [Table(Name="Orders")] public class Order { [Column(DbType="nvarchar(32) not null", Id=true)] public string OrderID; [Column(DbType="nvarchar(32) not null")] public string Customer; [Column] public int? Amount; }

  16. Integracja z SQL (DLinq) • Aby móc korzystać z mocy DLinq // tworzymy zapytanie var query = from c in custs from o in orders where o.Customer == c.Name select new { c.Name, o.OrderID, o.Amount, c.Age }; // i wywolujemy foreach (var item in query) Console.WriteLine("{0} {1} {2} {3}", item.Name, item.OrderID, item.Amount, item.Age);

  17. Podsumowanie • Linq prezentuje ciekawe podejście do przetwarzania nieobiektowych danych

More Related