- Aynan C# tili kuch, elegantlik va maʼnodorlikni o’zida muvaffaqiyatli birlashtirgan birinchi strukturaviy til bo’ldi. Uning bo’lishi mumkin bo’lgan xatolar masʼuliyatini tilga emas dastur tuzuvchi zimmasiga yuklaydigan prinsiplar bilan inobatga olgan holda sintaksisdan foydalanishdagi qisqalik va osonlik kabi xususiyatlari tezda ko’plab tarafdorlarini topdi. 1998-2001-yilda Microsoft kompaniyasi dasturchilari Anderson Xeylsberg va Scott Wiltaumota raxbarligida Microsoft.NET Framework dasturi platformasida ishlovchi C# (si sharp) dasturlash tili ishlab chiqildi.Hozirgi kunda C# dasturlash tili yuqori bosqichli dasturlash tillari ichida eng samarali dasturlash tillaridan hisoblanadi. C# dasturlash tilida dastur tuzish uchun Visual Studio .NET muhitidan yoki SharpDevelopdan foydalanamiz. C# dasturlash tili obektga mo’ljallangan dasturlash tili hisoblanadi. C# dasturlash tili kompilyatori .CS kengaytmali ko’rsatilgan fayllar majmuasini boshlang’ich kodga o’tkazadi.Bu majmua yordamida kompilyator .exe (bajaruvchi fayl) kengaytmali va dll (kutubxona fayli) fayllar hosil qilish mumkin.
- 1-§. LINQ asoslari
- LINQ (Language-Integrated Query) - ma'lumotlar manbasini so'rash uchun oddiy va qulay til. IEnumerable interfeysini amalga oshiradigan ob'ekt (masalan, standart to'plamlar, massivlar), DataSet, XML hujjati ma'lumotlar manbai bo'lishi mumkin. Lekin manba turidan qat'i nazar, LINQ hamma uchun ma'lumotlarni olish uchun bir xil yondashuvni qo'llash imkonini beradi.
- LINQ ning bir nechta xususiyatlari mavjud:
- LINQ to Objects : massivlar va kolleksiyalar bilan ishlash uchun ishlatiladi
- LINQ to Entities : Entity Framework texnologiyasi orqali ma'lumotlar bazalariga kirishda foydalaniladi
- LINQ to Sql : MS SQL Serverda ma'lumotlarga kirish texnologiyasi
- LINQ to XML : XML fayllari bilan ishlashda foydalaniladi
- LINQ to DataSet : DataSet obyekti bilan ishlashda foydalaniladi
- Parallel LINQ (PLINQ) : Parallel so'rovlarni bajarish uchun ishlatiladi
- Ushbu bobda asosiy e'tibor LINQ to Objects ga qaratiladi , ammo keyingi maqolalarda LINQ ning boshqa xususiyatlari ham ko'rib chiqiladi.
- LINQ ning qulayligi nimada? Keling, eng oddiy misolni ko'rib chiqaylik. Massivdan ma’lum bir harf bilan boshlanadigan satrlarni tanlaymiz va olingan ro‘yxatni tartiblaymiz:
-
- string[] teams = {"Бавария", "Боруссия", "Реал Мадрид", "Манчестер Сити", "ПСЖ", "Барселона"};
- var selectedTeams = new List();
- foreach(string s in teams)
- {
- if (s.ToUpper().StartsWith("Б"))
- selectedTeams.Add(s);
- }
- selectedTeams.Sort();
- foreach (string s in selectedTeams)
- Console.WriteLine(s);
- LINQ kengaytirish usullari
- Standart sintaksisga qo'shimcha ravishda from .. in .. selectbiz LINQ so'rovini yaratish uchun interfeys uchun belgilangan maxsus kengaytma usullaridan foydalanishimiz mumkin IEnumerable. Odatda, bu usullar LINQ whereyoki tipidagi operatorlar bilan bir xil funksionallikni amalga oshiradi orderby.
- Masalan:
- string[] teams = { "Бавария", "Боруссия", "Реал Мадрид", "Манчестер Сити", "ПСЖ", "Барселона" };
- var selectedTeams = teams.Where(t=>t.ToUpper().StartsWith("Б")).OrderBy(t => t);
- foreach (string s in selectedTeams)
- Console.WriteLine(s);
- Foydalanilgan LINQ kengaytma usullari ro'yxati
- Select : tanlangan qiymatlarning proyeksiyasini belgilaydi
- Where: tanlash filtrini belgilaydi
- OrderBy : mahsulotlarni ortib borish tartibida buyurtma qiladi
- OrderByDescending : elementlarni kamayish tartibida buyurtma qiladi
- ThenBy : elementlarni o'sish tartibida buyurtma qilish uchun qo'shimcha mezonlarni belgilaydi
- ThenByDescending : elementlarni kamayish tartibida buyurtma qilish uchun qo'shimcha mezonlarni belgilaydi
- Join : ma'lum xususiyatga asoslangan ikkita to'plamni birlashtiradi
- GroupBy : elementlarni kalit bo‘yicha guruhlaydi
- ToLookup : barcha elementlar lugʻatga qoʻshilgan holda elementlarni kalit boʻyicha guruhlash
- GroupJoin : To'plamni birlashtirish va elementlarni kalit bo'yicha guruhlashni amalga oshiradi
- Maks : maksimal qiymatni topadi
- Take : ma'lum miqdordagi elementlarni tanlaydi
- Skip : ma'lum miqdordagi elementlarni o'tkazib yuboradi
- TakeWhile : Shart to'g'ri bo'lsa, ketma-ketlik elementlari zanjirini qaytaradi
- SkipWhile : Berilgan shartni qanoatlantirsa, elementlarni ketma-ket o‘tkazib yuboradi va qolgan elementlarni qaytaradi.
- Concat : ikkita to'plamni birlashtiradi
- Zip : ma'lum bir shartga ko'ra ikkita to'plamni birlashtiradi
- First : to'plamdagi birinchi elementni tanlaydi
- FirstOrDefault : To'plamdagi birinchi elementni tanlaydi yoki standartni qaytaradi
- Single : to'plamning bitta elementini tanlaydi, agar to'plamda bir nechta yoki kamroq element bo'lsa, istisno chiqariladi
- SingleOrDefault : To'plamdagi birinchi elementni tanlaydi yoki standartni qaytaradi
- ElementAt : Muayyan indeksdagi ketma-ketlik elementini tanlaydi
- ElementAtOrDefault : Muayyan indeksdagi to'plam elementini tanlaydi yoki indeks diapazondan tashqarida bo'lsa, standart qiymatni qaytaradi
- Namunalarni filtrlash va proyeksiyalash
- Shart bo'yicha to'plamdan elementlarni tanlash uchun Where usulidan foydalaning . Masalan, 10 dan katta bo'lgan barcha juft elementlarni tanlaylik.
- LINQ operatorlari bilan filtrlash:
- int[] numbers = { 1, 2, 3, 4, 10, 34, 55, 66, 77, 88 }; IEnumerable<int> evens = from i in numbers where i%2==0 && i>10 select i; foreach (int i in evens) Console.WriteLine(i);
- class User { public string Name { get;set; } public int Age { get; set; } public List Languages { get; set; } public User() { Languages = new List(); } }
- Keling, foydalanuvchilar to'plamini yaratamiz va ulardan 25 yoshdan oshganlarni tanlaymiz:
- List users = new List {
- new User {Name="Том", Age=23, Languages = new List {"английский", "немецкий" }}, new User {Name="Боб", Age=27, Languages = new List {"английский", "французский" }}, new User {Name="Джон", Age=29, Languages = new List {"английский", "испанский" }}, new User {Name="Элис", Age=24, Languages = new List {"испанский", "немецкий" }} }; var selectedUsers = from user in users where user.Age > 25 select user; foreach (User user in selectedUsers) Console.WriteLine($"{user.Name} - {user.Age}");
- Konsol chiqishi:
- Endi murakkabroq filtrlarni ko'rib chiqamiz. Masalan, foydalanuvchi sinfida foydalanuvchi gapiradigan tillar ro'yxati mavjud. Agar foydalanuvchilarni til bo'yicha filtrlash kerak bo'lsa nima bo'ladi:
- var selectedUsers = from user in users from lang in user.Languages where user.Age < 28 where lang == "английский" select user;
- Shunday qilib, ikkita manbadan namuna olishda birinchi manbaning har bir elementi ikkinchi manbaning har bir elementiga mos keladi. Ya'ni, siz 4 juft olasiz.
- Orderby operatori ma'lumotlar to'plamini o'sish tartibida saralash uchun ishlatiladi :
- int[] numbers = { 3, 12, 4, 10, 34, 20, 55, -66, 77, 88, 4 }; var orderedNumbers = from i in numbers orderby i select i; foreach (int i in orderedNumbers) Console.WriteLine(i);
- 4-§. All va Any metodlari bilan ishlash
- “All”, “Har qanday” va “Contains” usullari to‘plamning ma’lum shartga mos kelishini aniqlash imkonini beradi va natijaga qarab ular “to‘g‘ri” yoki “noto‘g‘ri”ni qaytaradi.
- All usuli barcha elementlarning shartga mos kelishini tekshiradi. Misol uchun, keling, barcha foydalanuvchilar 20 yoshdan katta ekanligini va ism T harfi bilan boshlanganligini bilib olaylik:
- List users = new List() { new User { Name = "Tom", Age = 23 }, new User { Name = "Sam", Age = 43 }, new User { Name = "Bill", Age = 35 } }; bool result1 = users.All(u => u.Age > 20); // true if (result1)
- Console.WriteLine("У всех пользователей возраст больше 20"); else Console.WriteLine("Есть пользователи с возрастом меньше 20"); bool result2 = users.All(u => u.Name.StartsWith("T")); //false if (result2) Console.WriteLine("У всех пользователей имя начинается с T"); else Console.WriteLine("Не у всех пользователей имя начинается с T");
- Barcha foydalanuvchilar 20 yoshdan oshgan
- Hamma foydalanuvchilar T bilan boshlamaydi
- Barcha foydalanuvchilar 20 yoshdan katta bo'lganligi sababli, o'zgaruvchi result1bo'ladi true. Shu bilan birga, barcha foydalanuvchilarning T harfi bilan boshlangan nomi yo'q, shuning uchun ikkinchi o'zgaruvchi result2teng bo'ladi false.
- Har qanday usul xuddi shunday ishlaydi, faqat to'plamning kamida bitta elementi ma'lum bir shartga javob berishini aniqlashga imkon beradi:
- bool result1 = users.Any(u => u.Age < 20); //false if (result1) Console.WriteLine("Есть пользователи с возрастом меньше 20"); else Console.WriteLine("У всех пользователей возраст больше 20"); bool result2 = users.Any(u => u.Name.StartsWith("T")); //true if (result2) Console.WriteLine("Есть пользователи, у которых имя начинается с T"); else Console.WriteLine("Отсутствуют пользователи, у которых имя начинается с T");
- Xulosa
- Hozirgi zamonda yurtimizda Axborat Texnologiyalarini rivojlantirish yo’lida juda ko’p ishlar amalga oshirilmoqda. Xususan ko’p joylarda dasturlash orqali ko‘p loyihalar oson va qulay bajarilyapti. Dasturlash chet davlatlarida anchagina rivojlangan masalan Amerika, Malayziya, Koreya, Hindiston.Hozirgi kunda har-xil dasturlash tillari mavjud C++, C#, Java, va hokozo. Shularning orasidan C# Windows muhitida ishlaydigan dastur tuzish uchun qulay vosita bo’lib, kompyuterda dastur yaratish ishlarini avtomatlashtiradi, xatoliklarni kamaytiradi va dastur tuzuvchi ishini oshiradi kamchiliklarni kamaytiradi. C# dastur zamonaviy visual loyihalash texnalogiyasi asosida obyektga yo’naltirilgan dasturlash tili hisoblanadi.
- Men bu kurs ishi davomida C# dasturlash tilida Console Application bo’limida LINQ so’rovlari bilan ishlash mavzusini kengroq yoritib berishga harakat qildim. LINQ so’rovlarining asosiy vazifalari va uning qulayligi haqida ham tushunarli bo’lishi uchn kengroq va aniqroq to’xtalib o’tdim .Bu kurs ishimda LINQ so’rovlari haqida ma’lumot berib dastur orqali vazifalarni tushuntirishga harakat qildim.
- Foydalangan adabiyotlar.
- 1. Герберт Шилдт. C# 4.0: полное руководство.: Пер. с англ.М.: ООО ―И.Д. Вильямс, 2011.1056 с.
- 2. Джозеф Албахари и Бен Албахари C# 6.0. Справочник. Полное описание языка, 6-е изд.: Пер. с англ. – М.: ООО ―И. Д. Вильямс, 2016. – 1040.
- 3. http://dastur.uz-Kompyuter dasrurlari va kompyuterda dasturlashga oid forum,xabar va yangiliklar.
- 4. Metanit.com sayti va You Tube platformasi.
-
E’tiboringiz uchun rahmat!
Do'stlaringiz bilan baham: |