8-ma’ruza. LINQ soʻrovlar
LINQ qanday ishlaydi?
LINQ query yozish usullari
IEnumerable va IQuerable
LINQ operatorlari
LINQ qanday ishlaydi?
LINQ ma'lumotlar bazasiga (data source)ga murojaatlar yuborish va
ma'lumotlarni qayta ishlash uchun xizmat qiladi. LINQ so'rovlar (query) ma'lumotlar
manbasi turlariga qarab bo'limlarga bo'linadi:
Misol tariqasida eng oddiy so'rov turini ko'rib chiqamiz:
Tepadagi kodda LINQ so'rov yordamida to'plam elementlari orasidan 80 dan
kattalaridan yangi to'plam hosil qilindi va ekranga chiqarildi.
LINQ query yozish usullari
Galdagi mavzuyimizda
LINQ
da
query
yozish usullari ko'rib chiqamiz. C#
tilida
query
larni yozishning 3 xil usullari mavjud. Har bir usulning o'ziga yarasha
kerakli tomonlari mavjud:
1. Query Syntax
2. Method Syntax
3. Mixed Syntax (Query + Method)
Birinchisidan boshlaymiz:
Query Syntax
usuli har qanday murakkab querylani
oson, tushunishga qulay va sodda ko'rinishga ega usul hisoblanadi. Bu usul ko'p
hollarda SQL queryga juda o'xshab ketadi. Quyida siz ushbu usulning sintaksisini
ko'rishingiz mumkin:
Ikkinchisidan davom ettiramiz:
Method Syntax
bugungi kunda eng mashhur
usullardan hisoblanadi (serioz). Chunki ko'pgina murakkab vazifalarni ushbu usul
bilan osonlikcha hal qilsa bo'ladi. Bu usul sintaksisi o'qishga juda oson hisoblanadi
(ko'pchilik dasturchilar tomonidan tasdiqlangan). Lekin murakkab
query
lar uchun
ushbu usulni
Query Syntax
ga nisbatan yozish birmuncha qiyin. Bu usulda
query
bir
necha metodlar (albatta nuqta(.)) bilan aralashgan holda yoziladi. Quyida sintaksisini
ko'rishingiz mumkin:
Uchinchisi bilan tugatamiz: Mixed Syntax. Bu usul joriy usullar, Query Syntax
va Method Syntaxlarning kombinatsiyasi desak adashmaymiz. Ushbu usul bilan
querylarni yozish bir muncha osonlashishi mumkin. Sintaksisi quyidagicha
Agarda 10 daqiqa vaqtingizni diqqat bilan ushbu maqolaga sarflasangiz, demak
siz hech qachon
query
yozish usullarida qiyinchiliklarga duch kelmaysiz!
IEnumerable va IQuerable
LINQ so`rovlarda qaytish tipi aniq bo`lmagan holatlarda ularni to`plam
holatida qabul qilib olish uchun IEnumerable interfeysidan foydalaniladi. Ushbu
interfeys System.Collection namespace da joylashgan. IEnumerable C# dasturlash
tilidagi barcha to`plamlar bilan ishlay oladi. Ushbu toifadagi to`plam elementlariga
itteratorlik murojaat mavjud bo`lgani uchun bemalol foreach takrorlanish operatori
yordamida elementlarni olishimiz mumkin bo`ladi. IEnumerable umumiy tiplar
uchun IEnumerable ko`rinishda ham murojaat qilish mumkin.
IQuerable ham interfeys bo`lib u System.Linq namespace da joylashgan.
IQuerable interfeysi IEnumerable interfeysidan olingan vorisdir. IQuerable
Provayderlik hususiyatiga ham ega. Ushbu hususiyat IQueryProvider deb
nomlanadi.IQueryProvider LinqProviders dan foydalanadi. IQuerable boshqa
provayderlar bilan ishlash jarayonida eng yaxshi ko`makchi bo`la oladi (chunki tezlik
jihatdan IEnumerable ko`ra tezroq ishlaydi).
LINQ operatorlari
Operatorlar LINQ yozish jarayonida ishlatiladigan metodlardir. Bu metodlar
ko`plab imkoniyatlarni o`z ichiga oladi.
Misol uchun:
Ma'lumotlarni filtirlash (Filter the data)
Tartiblash (Order the data
va boshqalar...
LINQ operatorlari quyidagi bo'limlarga bo'lingan
1. Sorting Data
2. Set Operations
3. Filtering Data
4. Quantifier Operations
5. Projection Operations
6. Partitioning Data
7. Grouping Data
8. Equality Operations
9. Element Operations
10. Converting Data Types
11. Concatenation Operations
12. Aggregation Operations
13. Generation Operations
14. Join Operations
Select
Select operatori yordamida ma'lumotlar bazasidan ma'lumotlarni tanlab olib
yangi to'plam hosil qilish uchun ishlatiladi. Yaratilgan yangi to'plam bilan bajarilgan
holatlar ma'lumotlar bazasiga ta'sir o'tkazmaydi. Tanlashni bir necha usullarini ko'rib
o'tamiz:
SelectMany
To’plam elementlarini IEnumerable ga o’zlashtiradi va hosil bo’lgan ketma –
ketlikni bitta kesamdek tasvirlaydi.
Method ko’rinishi:
Query ko
’
rinishi o`zi aslida vajud emas lekin quydagi ko
’
rinishda ifodalash
mumkin:
Asosan quydagi holatlar uchun ko’proq ishlatiladi:
SelectMany bizga asosan ichma – ich ro’yhatlar bilan ishlashda qo’l keladi.
Query syntaxdan ko’ra method syntaxdan foydalanishni tavsiya beraman chunki
query uchun SelectMany yo’q ichma ich tanlab kirishga to’g’ri keladi.
Foydalanish uchun tavsiya etiladigan adabiyotlar
1.
Троелсен Эндрю, Джепикс Филипп. Язык программирования C# 7 и
платформы .NET и .NET Core. Вильямс. 2018
2.
Албахари Бен, Албахари Джозеф. C# 7.0. Справочник. Полное
описание языка. Пер. с англ.-СПб: “Альфа-книга”, 2018, -1024 с.
3.
Ю.С. Магда C#. Язык программирования Си Шарп. – Изд. ДМК Пресс,
2013, 190 с.
4.
Лабор В.В. C#: Создание приложение для Windows. – Мн.: Харвест,
2003, 384 с.
5.
https://metanit.com/sharp/tutorial/4.3.php
Do'stlaringiz bilan baham: |