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() ва ғайра) сурат мегирад. Ин оптимизатсия мекунад кор бо маълумот.
  • Типи қавӣ (Strong Typing): 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# беҳтар мекунад.