Risipa de key_press | Programare

Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Risipa de key_press | Programare - Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Despre Linq in .Net

     In .Net Framework 3.5 este introdus LINQ, un mecanism pentru manipularea colectiilor de obiecte (selectare, ordonare, filtrare, agregarea pentru afisarea, modificarea si durabilitatea datelor)

     Language INtegrated Query permite interograrea unor seturi de obiecte prin invocarea unor metode care “oglindesc” functionalitatea SQL.

     LINQ permite accesarea unor tehnologii pe care un dezvoltator nu le putea accesa sau le accesa foarte greu: baze de date MySql, fisiere din Resource Description Framework (RDF), se pot efectua interogari in Active Directory, se pot citi si scrie documente Office 2007.

     De exemplu, daca dezvoltatorul va avea nevoie de o interogare intr-un tablou, Web Service sau baza Sql Server, nu va fi nevoie sa aduca mari modificari sintaxei.

     Tot ce am scris pana acum se poate retine intr-o singura propozitie: Linq nu este “technology specific“.

Exemplu de folosire Linq:

     Presupunem ca avem tabela Student intr-o baza de date Compact Edition:

     O interogare clasica de SQL a tabelei, se scrie astfel:

SELECT * 
FROM STUDENT 

     In LINQ, interogarea se face astfel:

from s in STUDENT select s

     Cuvantul cheie from determina sursa de date folosita pentru a selecta informatia. from se adauga pentru fiecare sursa de date pe care vrem sa o includem in interogare.

     In proiectarea LINQ s-au avut in vedere simplificarea accesului la sursa de date, type safety, suport IntelliSense, suport Debugger.

     Spatiul de nume System.Linq contine toate clasele de baza si interfetele care functioneaza cu Linq, deci va trebuie adaugat ori de cate ori va fi necesar sa folosim Linq.

using System.Linq;

     Clasele in .NET sunt foarte variate, de la vectori la colectii, sau de la colectii generice la colectii specializate. Linq are nevoie doar ca respectiva clasa sa implementeze interfata IEnumberable, pentru ca , asemenea instructiunii foreach, sa poata lucra cu obiectele de tipul clasei.

     Metodele folosite in Linq sunt metode generice ale claselor IEnumberable (folosesc colectii de obiecte asa cum clauzele SQL folosesc randurile unui tabel). La fel ca in SQL, metodele LINQ pot returna colectii de obiecte sau o singura valoare.

     Vom construi un exemplu, in care vom folosi LINQ pentru interogarea rapida a unei surse de date. Avem nevoie de un Textbox si un ListView. In casuta de text vom introduce un numar care va reprezenta numarul de caractere pe care un cuvant cautat trebuie sa il aiba. Astfel, daca vom introduce cifra 4 in textbox, atunci colectia va fi compusa din string-uri a caror lungime este 4. Rezultatele vor fi adaugate intr-o control ListView.

private void Cauta()
{
    //nu este introdus nici un caracter
    if (textBox1.Text.Trim().Length == 0)
    {
        MessageBox.Show("Introdu numar de caractere pentru cautare");
    }
    else
    {
        string[] vectorStringNume = { "Marius", "Elena", "Cristi", "Adi", "Olivia", };
        IEnumerable<string> numeCuPatruCaractere = from nume in vectorStringNume where nume.Length == (Convert.ToInt64(textBox1.Text)) select nume;

        listView1.Items.Clear();
        
        //pentru fiecare element din colectie cream si adaugam un element in lista
        foreach (var nume in numeCuPatruCaractere )
        {
            ListViewItem element = new ListViewItem();
            element.Text = nume;
            listView1.Items.Add(element);
        }
    }
}

     In .NET Framework 3.5, exista 5 tipuri de Linq:

LINQ to SQL

Linq to Entities

Linq to Dataset

Linq to Objects

Linq to XML

     Linq in .Net Compact Framework

     Linq to SQL si Linq to Entities care sunt in primul rand adresate lucrului cu baze de date relationale, nu sunt disponibile in Compact Framework.

     Scopul principal al LINQ in Compact Framework nu este cel ce simplifica accesul la baza de date, ci mai degraba ca manipuleaza colectii.

     Pe scurt, Linq :

  • furnizeaza accesul la date
  • permite simplificarea cautarilor prin reducerea codului necesar (nu se mai pierde timp pentru scrierea metodelor de cautare)
  • interactioneaza cu toate tipurile de surse de date printr-o abordare comuna

     Folosirea LINQ in dezvoltarea aplicatiilor poate spori functionalitatea cu un minim de cod.

     In urmatoarele articole, vom continua studiul asupra LINQ in .NET Compact Framework si vom analiza in detaliu Linq to DataSet si Linq To Objects.

Category: Uncategorized
  • Jean Valjean says:

    Hmm, mie mi se pare o “reinventare a rotii” aceasta noua sintaxa LINQ din moment ce SQL e standard deja. Paradoxal este ca Microsoft avea deja implementat un SQL query engine in Visual FoxPro care lucra cu toate sursele de date.

    May 17, 2010 at 2:36 pm
    • zeltera says:

      Linq nu e deloc reinventare a rotii, ci mai curand…. imbunaatire a ei. E o cale prin care sql (ca si limbaj) este integrat in limbajul de programare direct, ceea ce iti permite sa il folosesti pe orice tip de date (care implementeaza o anumita interfata – IEnumerable).
      Poti selecta din xml, baze date, colectie de obiecte foloind aceeasi sintaxa. Daca inveti sa folosesti linq, el poate deveni un instrument puternic si folositor.

      May 17, 2010 at 3:43 pm

    Pingback/Trackback

    Tweets that mention Despre Linq in .Net | by zeltera -- Topsy.com

Your email address will not be published. Required fields are marked *

*