Junior
LINQ ilə tanışsınız?
sobes.tech Süni İntellekt
AI-dan cavab
Bəli, tanışam.
LINQ (Language Integrated Query) - bu, C# dilində sorğuların funksionallığını inteqrasiya edən texnologiyalar toplusudur. Bu, müxtəlif məlumat mənbələrinə (kolleksiyalar, verilənlər bazaları, XML və s.) birbaşa C# kodunda sorğular yazmağa imkan verir və vahid sintaksis və model istifadə edir.
LINQ-in əsas komponentləri və xüsusiyyətləri:
- LINQ provayderləri: xüsusi məlumat mənbələri üçün LINQ sorğularını spesifik əmrlərə çevirən interfeys və sinifləri həyata keçirirlər. Nümunələr: LINQ to Objects, LINQ to SQL, LINQ to XML.
- LINQ operatorları: IEnumerable<T> və IQueryable<T> üçün genişləndirmələrdir və filtrasiya, proyeksiya, sıralama, qruplaşdırma və agregasiya kimi standart sorğu əməliyyatlarını təmin edir. İki formada mövcuddur:
- Sorğu sintaksisi (Query Syntax), SQL-ə bənzəyir:
// Sorğu sintaksisi nümunəsi var query = from item in collection where item.Property > 10 orderby item.AnotherProperty select item.Result; - Metod sintaksisi (Method Syntax), genişləndirmə metodlarından istifadə edir:
// Metod sintaksisi nümunəsi var query = collection.Where(item => item.Property > 10) .OrderBy(item => item.AnotherProperty) .Select(item => item.Result);
- Sorğu sintaksisi (Query Syntax), SQL-ə bənzəyir:
- Gecikmiş icra (Deferred Execution): LINQ sorğuları dərhal icra edilmir. Yalnız sorğunun nəticəsi həqiqətən lazım olduqda, məsələn,
foreachilə keçərkən,ToList(),ToArray(),Count()və s. çağırıldıqda icra olunur. Bu, məlumatların işlənməsini optimallaşdırır. - Güclü tip yoxlaması: LINQ, C#-ın statik tip yoxlamasının üstünlüklərindən istifadə edir və tərtib zamanı yoxlamalar və IntelliSense təmin edir.
- Birləşdirmə imkanı: Sorğu operatorları asanlıqla birləşdirilə bilər və mürəkkəb sorğular yarada bilər.
- Genişləndirmə imkanları: Öz provayderlərinizi və operatorlarınızı yarada bilərsiniz.
Ən çox istifadə olunan LINQ operatorları:
| Kateqoriya | Metod sintaksisində operatorlar | Təsviri |
|---|---|---|
| Filtrasiya | Where, OfType | Elementləri şərtə və ya növə görə seçir. |
| Proyeksiya | Select, SelectMany | Elementləri çevirmək və ya genişləndirmək. |
| Sıralama | OrderBy, OrderByDescending, ThenBy, ThenByDescending, Reverse | Elementləri sıralayır. |
| Qruplaşdırma | GroupBy | Elementləri açara görə qruplaşdırır. |
| Birleştirme | Join, GroupJoin | Fərqli mənbələrdən elementləri birləşdirir. |
| Aggregasiya | Count, LongCount, Sum, Average, Min, Max, Aggregate | Toplam və ya digər agregat dəyərləri hesablayır. |
| Kvantorlar | All, Any, Contains, SequenceEqual | Elementlərin mövcudluğunu və ya uyğunluğunu yoxlayır. |
| Elementlər | First, FirstOrDefault, Single, SingleOrDefault, ElementAt, ElementAtOrDefault, DefaultIfEmpty | Tək elementləri əldə edir. |
| Bölmə | Take, Skip, TakeWhile, SkipWhile | Elementləri seçir və ya atlayır. |
| Konvertasiya | ToArray, ToList, ToDictionary, ToLookup, Cast, AsEnumerable, AsQueryable | Digər kolleksiya tiplərinə çevrilir. |
| Nəsil | Range, Repeat | Ardıcıllıqlar yaradır. |
| Kümələr | Distinct, Union, Intersect, Except | Kümə əməliyyatları. |
| Birleştirme | Zip | İki ardıcıllıqdan elementləri birləşdirir. |
LINQ, C#-da məlumatlarla işləməyi sadələşdirir və daha oxunaqlı edir.