Sobes.tech
Junior

Դու ծանոթ ես LINQ- ի՞ր։

sobes.tech AI

Պատասխան AI-ից

Այո, ծանոթ եմ:

LINQ (Language Integrated Query) - դա տեխնոլոգիաների հավաքածու է, որոնք ինտեգրում են հարցումների ֆունկցիոնալությունը C# լեզվում: Այն թույլ է տալիս գրել հարցումներ տարբեր տվյալների աղբյուրների (միացումներ, տվյալների բազաներ, XML և այլն) նկատմամբ անմիջապես C# կոդում, օգտագործելով միացյալ սինտաքսիս և մոդել:

Հիմնական բաղադրիչներն ու առանձնահատկությունները LINQ-ի:

  • LINQ պրովայդերներ: Իրականացնում են ինտերֆեյսներ և դասեր, որոնք թարգմանում են LINQ հարցումները հատուկ հրամանների՝ կոնկրետ տվյալների աղբյուրի համար: Օրինակներ՝ LINQ to Objects, LINQ to SQL, LINQ to XML:
  • LINQ օպերատորներ: ընդլայնումներ IEnumerable<T> և IQueryable<T> համար, որոնք տրամադրում են ստանդարտ հարցումների գործողություններ, ինչպիսիք են ֆիլտրումը, պրոյեկցիան, դասավորումը, խմբավորումը և ագրեգացիան: Կան երկու ձևերով՝
    • Հարցման սինտաքսիս (Query Syntax), որը հիշեցնում է SQL:
      // Օրինակ հարցման սինտաքսիս
      var query = from item in collection
                  where item.Property > 10
                  orderby item.AnotherProperty
                  select item.Result;
      
    • Մեթոդների սինտաքսիս (Method Syntax), որը օգտագործում է ընդլայնող մեթոդներ:
      // Օրինակ մեթոդների սինտաքսիս
      var query = collection.Where(item => item.Property > 10)
                            .OrderBy(item => item.AnotherProperty)
                            .Select(item => item.Result);
      
  • Հետաձգված կատարման (Deferred Execution): LINQ հարցումները չեն կատարվում անմիջապես դրանց սահմանումից հետո: Կատարման ժամանակը միայն այն ժամանակ է, երբ իրականում անհրաժեշտ է արդյունքը (օրինակ՝ foreach-ով անցնելիս, ToList(), ToArray(), Count() կանչելիս և այլն): Սա օպտիմալացնում է տվյալների հետ աշխատող աշխատանքը:
  • Կոշտ տիպավորում: LINQ օգտագործում է C#-ի ստատիկ տիպավորման առավելությունները, տրամադրելով ստուգումներ ժամանակակից կոդում և IntelliSense-ում:
  • Հնարավորություն համակցելու: Հարցումների օպերատորները հեշտությամբ կարելի է միացնել՝ ստեղծելու բարդ հարցումներ:
  • Ընդլայնելիություն: Կարող եք ստեղծել ձեր սեփական պրովայդերները և LINQ օպերատորները:

Ամենաշատ օգտագործվող LINQ օպերատորները:

Կատեգորիա Օպերատորներ մեթոդների սինտաքսիսում Նկարագրություն
Ֆիլտրում Where, OfType Ընտրում տարրեր պայմանով կամ տիպով:
Պրոյեկցիա Select, SelectMany Տարրերի փոխակերպում կամ բացում:
Դասավորում OrderBy, OrderByDescending, ThenBy, ThenByDescending, Reverse Տարրերի դասավորում:
Խմբավորում GroupBy Տարրերի խմբավորում ըստ բանալիի:
Միացում Join, GroupJoin Տարրերի միացում տարբեր աղբյուրներից:
Ագրեգացիա Count, LongCount, Sum, Average, Min, Max, Aggregate Ագրեգատ արժեքների հաշվարկ:
Քվանտորներ All, Any, Contains, SequenceEqual Տարրերի առկայության կամ համապատասխանության ստուգում:
Տարրեր First, FirstOrDefault, Single, SingleOrDefault, ElementAt, ElementAtOrDefault, DefaultIfEmpty Անհատական տարրեր ստանալ:
Կիսում Take, Skip, TakeWhile, SkipWhile Տարրերի ընտրություն կամ բաց թողում:
Կոնվերտացիա ToArray, ToList, ToDictionary, ToLookup, Cast, AsEnumerable, AsQueryable Մեկ այլ հավաքածուի տիպեր փոխարկում:
Գեներացիա Range, Repeat Շարահյուսությունների ստեղծում:
Կազմեր Distinct, Union, Intersect, Except Կազմերի վրա գործողություններ:
Միացում Zip Երկու շարահյուսությունների տարրերի միացում:

LINQ-ը զգալիորեն պարզեցնում և դարձնում ավելի ընթեռնելի տվյալների հետ աշխատող կոդը C#-ում։