Sobes.tech
Junior

Ești familiar cu LINQ?

sobes.tech AI

Răspuns de la AI

Da, cunosc.

LINQ (Language Integrated Query) - este un set de tehnologii care integrează funcționalitatea interogărilor în limbajul C#. Permite scrierea interogărilor către diferite surse de date (colecții, baze de date, XML etc.) direct în codul C#, folosind o sintaxă și un model unificate.

Componentele principale și caracteristicile LINQ:

  • Provederi LINQ: implementează interfețe și clase care traduc interogările LINQ în comenzi specifice pentru sursa de date respectivă. Exemple: LINQ to Objects, LINQ to SQL, LINQ to XML.
  • Operatori LINQ: extensii pentru IEnumerable<T> și IQueryable<T>, oferind operații standard de interogare, precum filtrare, proiecție, sortare, grupare și agregare. Există în două forme:
    • Sintaxa interogării (Query Syntax), asemănătoare SQL:
      // Exemplu de sintaxă a interogării
      var query = from item in collection
                  where item.Property > 10
                  orderby item.AnotherProperty
                  select item.Result;
      
    • Sintaxa metodelor (Method Syntax), folosind metode de extensie:
      // Exemplu de sintaxă a metodelor
      var query = collection.Where(item => item.Property > 10)
                            .OrderBy(item => item.AnotherProperty)
                            .Select(item => item.Result);
      
  • Executarea întârziată (Deferred Execution): interogările LINQ nu sunt executate imediat la definire. Execuția are loc doar atunci când rezultatul interogării este efectiv necesar (de exemplu, prin iterare cu foreach, apelarea ToList(), ToArray(), Count() etc.). Acest lucru optimizează manipularea datelor.
  • Tipizare puternică: LINQ utilizează avantajele tipizării statice în C#, oferind verificări în timpul compilării și IntelliSense.
  • Posibilitatea de combinare: operatorii de interogare pot fi combinați ușor pentru a crea interogări complexe.
  • Extensibilitate: se pot crea propriile provideri și operatori LINQ.

Cele mai frecvent utilizate operatori LINQ:

Categorie Operatori în sintaxa metodelor Descriere
Filtrare Where, OfType Selectarea elementelor după condiție sau tip.
Proiecție Select, SelectMany Transformarea elementelor sau deconectarea lor.
Sortare OrderBy, OrderByDescending, ThenBy, ThenByDescending, Reverse Sortarea elementelor.
Grupare GroupBy Gruparea elementelor după cheie.
Îmbinare Join, GroupJoin Îmbinarea elementelor din surse diferite.
Agregare Count, LongCount, Sum, Average, Min, Max, Aggregate Calcularea valorilor agregate.
Quantificatori All, Any, Contains, SequenceEqual Verificarea prezenței sau conformității elementelor cu condițiile.
Elemente First, FirstOrDefault, Single, SingleOrDefault, ElementAt, ElementAtOrDefault, DefaultIfEmpty Obținerea elementelor individuale.
Împărțire Take, Skip, TakeWhile, SkipWhile Selectarea sau omiterea elementelor.
Conversie ToArray, ToList, ToDictionary, ToLookup, Cast, AsEnumerable, AsQueryable Transformarea în alte tipuri de colecții.
Generare Range, Repeat Crearea de secvențe.
Mulțimi Distinct, Union, Intersect, Except Operații pe mulțimi.
Îmbinare Zip Combinarea elementelor din două secvențe.

LINQ simplifică și face mai lizibil codul pentru manipularea datelor în C#.