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);
- Sintaxa interogării (Query Syntax), asemănătoare SQL:
- 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, apelareaToList(),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#.