Junior
Ismered a LINQ-t?
sobes.tech MI
Válasz az MI-től
Igen, ismerem.
A LINQ (Language Integrated Query) egy olyan technológiák gyűjteménye, amelyek integrálják a lekérdezés funkcióit a C# nyelvbe. Lehetővé teszi különböző adatforrásokhoz (gyűjtemények, adatbázisok, XML stb.) közvetlenül a C# kódból írt lekérdezések írását, egységes szintaxist és modellt használva.
A LINQ fő összetevői és jellemzői:
- LINQ szolgáltatók: olyan interfészeket és osztályokat valósítanak meg, amelyek a LINQ lekérdezéseket specifikus parancsokká fordítják az adott adatforráshoz. Példák: LINQ to Objects, LINQ to SQL, LINQ to XML.
- LINQ operátorok: kiterjesztések az IEnumerable<T> és IQueryable<T> típusokra, amelyek standard lekérdezési műveleteket biztosítanak, mint szűrés, vetítés, rendezés, csoportosítás és aggregálás. Két formában léteznek:
- Lekérdezés szintaxis (Query Syntax), amely hasonlít az SQL-re:
// Lekérdezés szintaxis példája var query = from item in collection where item.Property > 10 orderby item.AnotherProperty select item.Result; - Metódus szintaxis (Method Syntax), amely kiterjesztő metódusokat használ:
// Metódus szintaxis példája var query = collection.Where(item => item.Property > 10) .OrderBy(item => item.AnotherProperty) .Select(item => item.Result);
- Lekérdezés szintaxis (Query Syntax), amely hasonlít az SQL-re:
- Elhalasztott végrehajtás (Deferred Execution): a LINQ lekérdezések nem hajtódnak végre azonnal a definiálásukkor. A végrehajtás csak akkor történik meg, amikor az eredmény ténylegesen szükséges (pl.
foreach-el való iterálás,ToList(),ToArray(),Count()hívásakor stb.). Ez optimalizálja az adatok kezelését. - Erős típusosság (Strong Typing): a LINQ kihasználja a C# statikus típusellenőrzésének előnyeit, ellenőrzéseket biztosítva fordítási időben és IntelliSense-t.
- Kombinálási lehetőség: a lekérdezési operátorokat könnyen lehet összekapcsolni összetettebb lekérdezések létrehozásához.
- Bővíthetőség: saját szolgáltatókat és operátorokat lehet létrehozni.
A leggyakrabban használt LINQ operátorok:
| Kategória | Metódus szintaxis operátorok | Leírás |
|---|---|---|
| Szűrés | Where, OfType | Elemszűrés feltétel vagy típus szerint. |
| Vetítés | Select, SelectMany | Elemszínűsítés vagy kiterjesztés. |
| Rendezés | OrderBy, OrderByDescending, ThenBy, ThenByDescending, Reverse | Elemsorba rendezése. |
| Csoportosítás | GroupBy | Elemszámok csoportosítása kulcs szerint. |
| Összekapcsolás | Join, GroupJoin | Elemsorozatok összekapcsolása. |
| Aggregálás | Count, LongCount, Sum, Average, Min, Max, Aggregate | Összegző értékek számítása. |
| Kvantorok | All, Any, Contains, SequenceEqual | Elemszámok meglétének vagy megfelelésének ellenőrzése. |
| Elemszámok | First, FirstOrDefault, Single, SingleOrDefault, ElementAt, ElementAtOrDefault, DefaultIfEmpty | Egyedi elemek elérése. |
| Szétválasztás | Take, Skip, TakeWhile, SkipWhile | Elemszűrés vagy átugrás. |
| Átalakítás | ToArray, ToList, ToDictionary, ToLookup, Cast, AsEnumerable, AsQueryable | Átalakítás más kollekciótípusokra. |
| Generálás | Range, Repeat | Szériák létrehozása. |
| Halmazok | Distinct, Union, Intersect, Except | Halmazműveletek. |
| Összekapcsolás | Zip | Két szekvencia elemeinek összekapcsolása. |
A LINQ jelentősen leegyszerűsíti és olvashatóbbá teszi a kódot az adatok kezelésében C#-ban.