DEV Community

Elshod Ibodullayev
Elshod Ibodullayev

Posted on

LINQ (Language Integrated Query)

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

  1. Kod qisqaligi – ko‘p qatorli foreach sikllarni bir qator LINQ ifodasi bilan almashtirish mumkin.
  2. O‘qilishi oson – SQLga o‘xshash sintaksis orqali ma’lumotlar ustida ishlash soddalashadi.
  3. Universal – har xil turdagi ma’lumot manbalariga (memorydagi koleksiya, DB, XML, JSON) ishlaydi.
  4. Type safety – kompilyator xatolarni oldindan aniqlaydi.
  5. 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;
Enter fullscreen mode Exit fullscreen mode

2. Method Sintaksis (Lambda ifodalar bilan)

var result = users
    .Where(u => u.Age > 18)
    .OrderBy(u => u.Name)
    .Select(u => u);
Enter fullscreen mode Exit fullscreen mode

Ikkalasi ham bir xil natija beradi, faqat yozilish uslubi boshqacha.


LINQ Qayerlarda Ishlatiladi?

LINQ asosan quyidagi sohalarda qo‘llaniladi:

  1. 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);
Enter fullscreen mode Exit fullscreen mode
  1. 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();
Enter fullscreen mode Exit fullscreen mode
  1. 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;
Enter fullscreen mode Exit fullscreen mode
  1. 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"]);
Enter fullscreen mode Exit fullscreen mode
  1. Parallel ishlash (PLINQ)
  • Katta hajmdagi ma’lumotlarni tezroq qayta ishlash uchun.
   var primes = numbers.AsParallel()
                       .Where(n => IsPrime(n));
Enter fullscreen mode Exit fullscreen mode

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 });
Enter fullscreen mode Exit fullscreen mode

2. Guruhlash

var groupedByCity = users.GroupBy(u => u.City);
Enter fullscreen mode Exit fullscreen mode

3. Join

var query = from student in students
            join grade in grades on student.Id equals grade.StudentId
            select new { student.Name, grade.Mark };
Enter fullscreen mode Exit fullscreen mode

4. Aggregation

var avgAge = users.Average(u => u.Age);
Enter fullscreen mode Exit fullscreen mode

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)