Junior
Kas sa tead LINQ-d?
sobes.tech AI
Vastus AI-lt
Jah, ma tunnen:
LINQ (Language Integrated Query) on tehnoloogiate kogum, mis integreerib päringute funktsionaalsuse C# keelde. See võimaldab kirjutada päringuid erinevatele andmeallikatele (kogu, andmebaasid, XML jne) otse C# koodis, kasutades ühtset süntaksit ja mudelit:
LINQ peamised komponendid ja omadused:
- LINQ pakkujad: teostavad liidesed ja klassid, mis tõlgivad LINQ päringud spetsiifilisteks käskudeks konkreetsele andmeallikale. Näited: LINQ to Objects, LINQ to SQL, LINQ to XML.
- LINQ operaatorid: laiendused IEnumerable<T> ja IQueryable<T> jaoks, mis pakuvad standardseid päringuoperatsioone, nagu filtreerimine, projektsioon, sortimine, rühmitamine ja agregatsioon. On kaks vormi:
- Päringu süntaks (Query Syntax), mis sarnaneb SQL-ile:
// Päringu süntaksi näide var query = from item in collection where item.Property > 10 orderby item.AnotherProperty select item.Result; - Meetodite süntaks (Method Syntax), kasutades laiendusmeetodeid:
// Meetodite süntaksi näide var query = collection.Where(item => item.Property > 10) .OrderBy(item => item.AnotherProperty) .Select(item => item.Result);
- Päringu süntaks (Query Syntax), mis sarnaneb SQL-ile:
- Hilinenud täitmine (Deferred Execution): LINQ päringud ei täida kohe nende määratlemisel. Täitmine toimub ainult siis, kui tulemus on tõesti vajalik (näiteks
foreach-ga läbides, kutsudesToList(),ToArray(),Count()jms). See optimeerib andmetega töötamist. - Tugev tüüpimine: LINQ kasutab C#-i staatilist tüüpimist, pakkudes kontrolli kompileerimise ajal ja IntelliSense'i kaudu.
- Võimalus kombineerida: päringuoperaatorid saab hõlpsasti ühendada, luues keerukamaid päringuid.
- Laiendatavus: saab luua oma pakkujaid ja LINQ operaatorid.
Kõige sagedamini kasutatavad LINQ operaatorid:
| Kategooria | Meetodite süntaksi operaatorid | Kirjeldus |
|---|---|---|
| Filtreerimine | Where, OfType | Elementide valimine tingimuse või tüübi järgi: |
| Projektsioon | Select, SelectMany | Elementide teisendamine või laienemine: |
| Sorteerimine | OrderBy, OrderByDescending, ThenBy, ThenByDescending, Reverse | Elementide järjestamine: |
| Rühmitamine | GroupBy | Elementide rühmitamine võtme järgi: |
| Ühinemine | Join, GroupJoin | Elementide ühendamine erinevatest allikatest: |
| Agregeerimine | Count, LongCount, Sum, Average, Min, Max, Aggregate | Agregeeritud väärtuste arvutamine: |
| Kvantorid | All, Any, Contains, SequenceEqual | Elementide olemasolu või vastavuse kontroll: |
| Elementide | First, FirstOrDefault, Single, SingleOrDefault, ElementAt, ElementAtOrDefault, DefaultIfEmpty | Eraldi elementide saamine: |
| Jaotamine | Take, Skip, TakeWhile, SkipWhile | Elementide valimine või vahelejätmine: |
| Konversioon | ToArray, ToList, ToDictionary, ToLookup, Cast, AsEnumerable, AsQueryable | Muutmine teisteks kogumite tüüpideks: |
| Generatsioon | Range, Repeat | Jada loomine: |
| Kogumid | Distinct, Union, Intersect, Except | Kogumi operatsioonid: |
| Ühendamine | Zip | Elementide ühendamine kahe jada vahel: |
LINQ lihtsustab oluliselt ja muudab koodi lugemise lihtsamaks andmetega töötamisel C#-is.