LINQ (Language Integrated Query) To‘liq Tushuntirish
LINQ (Language Integrated Query) — bu .NET tilida (C#, VB.NET va F#) ma’lumotlarni so‘roqlash (query qilish) imkonini beradigan texnologiya. U ma’lumotlarni turli manbalardan (kolektsiyalar, massivlar, ma’lumotlar bazasi, XML, JSON va boshqalar) o‘qish va ular ustida amallar bajarishni soddalashtiradi.
LINQ dasturchiga SQLga o‘xshash query sintaksisi yoki method chaining usulida yozish imkonini beradi. Bu esa kodni qisqa, tushunarli va qo‘llab-quvvatlashni oson qiladi.
LINQ ning Afzalliklari
- Kod qisqaligi – ko‘p qatorli foreach sikllarni bir qator LINQ ifodasi bilan almashtirish mumkin.
- O‘qilishi oson – SQLga o‘xshash sintaksis orqali ma’lumotlar ustida ishlash soddalashadi.
- Universal – har xil turdagi ma’lumot manbalariga (memorydagi koleksiya, DB, XML, JSON) ishlaydi.
- Type safety – kompilyator xatolarni oldindan aniqlaydi.
- Deferred execution – query natijasi faqat ishlatilganda bajariladi (optimallashtirish imkoniyati).
LINQ Sintaksislari
LINQ ikki xil yozilishi mumkin:
1. Query Sintaksis (SQLga o‘xshash)
var result = from user in users
where user.Age > 18
orderby user.Name
select user;
2. Method Sintaksis (Lambda ifodalar bilan)
var result = users
.Where(u => u.Age > 18)
.OrderBy(u => u.Name)
.Select(u => u);
Ikkalasi ham bir xil natija beradi, faqat yozilish uslubi boshqacha.
LINQ Qayerlarda Ishlatiladi?
LINQ asosan quyidagi sohalarda qo‘llaniladi:
- Kolleksiyalar bilan ishlash
- Massiv yoki List ichidagi elementlarni filter qilish, tartiblash, guruhlash.
int[] numbers = { 1, 2, 3, 4, 5, 6 };
var evenNumbers = numbers.Where(n => n % 2 == 0);
- Entity Framework va DB bilan ishlash
- SQL yozmasdan, C# kodida query yozish.
var students = context.Students
.Where(s => s.Age > 18)
.OrderBy(s => s.Name)
.ToList();
- XML bilan ishlash
XDocument doc = XDocument.Load("students.xml");
var names = from s in doc.Descendants("student")
where (int)s.Element("age") > 18
select s.Element("name").Value;
- JSON bilan ishlash (Newtonsoft yoki System.Text.Json orqali LINQ-to-JSON)
JObject json = JObject.Parse(jsonString);
var names = json["students"]
.Where(s => (int)s["age"] > 18)
.Select(s => s["name"]);
- Parallel ishlash (PLINQ)
- Katta hajmdagi ma’lumotlarni tezroq qayta ishlash uchun.
var primes = numbers.AsParallel()
.Where(n => IsPrime(n));
LINQ Operatorlari
LINQ’da ko‘plab operatorlar mavjud. Ularni guruhlarga bo‘lish mumkin:
1. Filtering (Filtrlash)
-
Where
– shartga mos elementlarni olish -
OfType
– ma’lum tipdagi elementlarni olish
2. Projection (Transformatsiya)
-
Select
– elementlarni boshqa shaklga o‘zgartirish -
SelectMany
– nested kolleksiyalarni yoyib yuborish
3. Sorting (Tartiblash)
-
OrderBy
,OrderByDescending
-
ThenBy
,ThenByDescending
4. Grouping (Guruhlash)
GroupBy
5. Joining (Bog‘lash)
-
Join
– ikki kolleksiyani bog‘lash -
GroupJoin
– grouped join
6. Aggregation (Hisoblash)
-
Count
,Sum
,Average
,Min
,Max
7. Quantifiers (Shartlar tekshirish)
-
Any
,All
,Contains
8. Element Operators
-
First
,FirstOrDefault
-
Single
,SingleOrDefault
ElementAt
9. Set Operators
Distinct
Union
Intersect
Except
10. Conversion
-
ToList
,ToArray
,ToDictionary
Amaliy Misollar
1. Oddiy Filter va Select
var adults = users.Where(u => u.Age >= 18)
.Select(u => new { u.Name, u.Age });
2. Guruhlash
var groupedByCity = users.GroupBy(u => u.City);
3. Join
var query = from student in students
join grade in grades on student.Id equals grade.StudentId
select new { student.Name, grade.Mark };
4. Aggregation
var avgAge = users.Average(u => u.Age);
LINQ Qanday Muammolarni Yechadi?
- Kodning uzunligi va murakkabligi – foreach va if kombinatsiyalarini soddalashtiradi.
- SQL va C# o‘rtasidagi tafovut – kod ichida SQL yozishga hojat yo‘q.
- Ma’lumot manbalari turli xil bo‘lsa – LINQ bir xil sintaksis bilan ishlaydi.
- Parallel ishlash – katta hajmdagi ma’lumotlarni tezroq qayta ishlash.
Xulosa
LINQ — bu .NET ekotizimidagi juda kuchli vosita bo‘lib, ma’lumotlar bilan ishlash jarayonini sezilarli darajada yengillashtiradi. Dasturchilar uchun:
- Kolleksiya ustida ishlash
- Ma’lumotlar bazasiga so‘rovlar
- XML/JSON bilan ishlash
- Parallel hisoblash
kabi vazifalarda eng qulay va samarali yondashuvlardan biridir.
✍️ Ushbu maqolani dev.to saytida joylashtirib, amaliy misollarni kengaytirish orqali yangi boshlovchilar va professional dasturchilar uchun LINQ haqida mukammal qo‘llanma qilish mumkin.
Top comments (0)