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);
- Синтакси дархост (Query Syntax), монанд ба SQL:
- Иҷрои таъхиршуда (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# беҳтар мекунад.