Mavzu: Linq so’rovlarining kechiktirilgan va zudlik bilan bajarilishi Reja



Download 28,31 Kb.
bet2/6
Sana31.12.2021
Hajmi28,31 Kb.
#270687
1   2   3   4   5   6
Bog'liq
LINQ so'rovlarining kechiktirilgan va zudlik bilan bajarilishi

Linq operatorlari:

Barcha so'rovlar quyida joylashgan bir qator muhim kalit so'zlarga asoslangan umumiy shaklga ega.



A scending

by

descending

equals

from

group

in

into

join

let

on

orderby

select

where






Ular orasidan faqat so'rovlar boshida quyida joylashgan kalit so'zlar ishlatiladi.



from

group

join

let

orderby

select

where




So'rov select kalit so'z bilan boshlanishi kerak va from yoki group kalit so'z bilan tugaydi. Select operatori so'rov bo'yicha berilgan qiymat turini belgilaydi va group operatori ma'lumotlarni guruhlar bilan qaytaradi va har bir guruh alohida-alohida o'tkazilishi mumkin. Yuqoridagi misollardan kelib chiqqan holda, operator istalgan elementni so'rov bo'yicha qabul qilish uchun kerak bo'lgan mezonlarni belgilaydi. Boshqa operatorlar so'rovni aniqlashtirishga imkon beradi.

where operator yordamida kerakli qiymatlarni tanlash

Yuqorida aytib o'tilganidek, where operatori so'rov bo'yicha qaytarilgan ma'lumotlarni tanlash uchun xizmat qiladi. Avvalgi misollarda ushbu operator eng oddiy shaklda namoyish etildi, unda ma'lumotlarni tanlash uchun yagona shart ishlatiladi. Shu bilan birga, batafsil ma'lumot olish uchun bir nechta shartlar va ayniqsa, bir nechta where operatorlaridan foydalanish mumkin. Misol sifatida, quyidagi dasturni ko'rib chiqaylik, berilgan massivdan 10 dan kichik va musbat qiymatlarni olish masalasini ko’rib chiqaylik.

// Bir nechta where operatorini ishlatish.

using System;

using System.Linq;

class TwoWheres

{

static void Main()



{

int[] nums = { 1, -2, 3, -3, 0, -8, 12, 19, 6, 9, 10 };

// Musbat qiymatlarni va 10 dan kichik qiymatlarni olish uchun so'rov yaratish.

var posNums = from n in nums

where n > 0

where n < 10

select n;

Console.Write("10 dan kichik musbat sonlar: ");

// So'rovni bajarish va natijalarini chiqarish.

foreach (int i in posNums) Console.Write(i + " ");

Console.WriteLine();

Console.ReadKey();

}}

Ushbu dastur quyidagi natijani beradi.



10 dan kichik musbat sonlar: 1 3 6 9

Ko'rib turganingizdek, bu so'rov bo'yicha faqat 10 dan kichik musbat qiymatlar olindi.. Ushbu natijaga quyidagi ikkita where operator orqali erishildi.

where n > 0

where n < 10

orderby operatori bilan so'rov natijalarini saralash

Ko'pincha so'rov natijalari saralashni talab qiladi. Hisobni balanslash tartibida muddati o'tgan hisoblar ro'yxatni olish olish kerak bo’lishi mumkin: eng kattasidan kichikiga yoki mijozlarning ismlari ro'yxatini alifbo tartibida. LINQ vositasining so'rov natijalarini orderby operatori yordamida osongina tartiblash mumkin.

Orderby operatori so'rov natijalarini bir yoki bir nechta mezonlarga ko'ra tartiblashtirish uchun ishlatilish mumkin. Birinchidan, bitta elementni tartiblashning eng oddiy usulini ko'rib chiqamiz. Quyida so'rov natijalarini bitta mezon bo'yicha tartiblash uchun orderby operatorining umumiy shakli keltirilgan:

orderby element tartibi bu erda “element” saralash amalga oshiriladigan ma'lum elementni bildiradi. Bu ma'lumotlar manbasida saqlanadigan butun element yoki ushbu elementdagi bitta maydonning bir qismi bo'lishi mumkin. “tartibi” navbati bilan o'sib boruvchi yoki kamayib boruvchi tartibni, tegishli ravishda ascending yoki descending kalit so'zlarni majburiy ravishda qo'shish bilan amalga oshiriladi. Odatda, o’sish tartibida tartiblash uchun ascending kalit so'z odatda qo’yilmaydi.

Quyida int turidagi massivdan qiymatlarni olish uchun orderby operatoridan foydalanilgan dastur keltirilgan.

// orderby operatoridan foydalanish.

using System;

using System.Linq;

class OrderbyDemo

{

static void Main()



{

int[] nums = { 10, -19, 4, 7, 2, -5, 0 };

// Saralangan tartibda qiymatlarni olish uchun so'rov yaratish

var posNums = from n in nums

orderby n

select n;

Console.Write("O'sish qiymatlari: ");

// So'rovni ishga tushirish va natijalarini ko'rsatish.

foreach (int i in posNums) Console.Write(i + " ");

Console.WriteLine();

Console.ReadKey();

}

}



Ushbu dasturni bajarishda quyidagi natija olinadi.

O'sish qiymatlari: -19 -5 0 2 4 7 10

Quyida o’sish tartibida tartiblangan qiymatni kamayish tartibini o'zgartirish uchun, descending kalit so'z yozish kifoya qiladi.

var posNums = from n in nums

orderby n descending

select n;

Ushbu so'rovni bajargandan so’ng, qiymatlarni teskari tartibda olasiz.

Ko'pincha so'rov natijalarini saralash yagona mezonga muvofiq amalga oshiriladi. Shunga qaramay, orderby operatorining quyidagi shakli bir necha mezonlarga ko'ra tartiblash uchun xizmat qiladi.

orderby element_a yo'nalishi, element_b yo'nalishi, element_c yo'nalishi, …

// orderby operatori yordamida so'rov natijalarini

//bir nechta mezonlar bo'yicha tartiblang

using System;

using System.Linq;

class Account

{

public string Fam { get; private set; }



public string Ism { get; private set; }

public double Balans { get; private set; }

public string AccountNumber { get; private set; }

public Account(string fn, string In, string accnum, double b)

{

Fam = fn;



Ism = In;

AccountNumber = accnum;

Balans = b;

}

}



class OrderbyDemo

{

static void Main()



{

// Manba ma'lumotlarini yaratish.

Account[] accounts =

{ new Account("Abdiazizova", "Nilufar", "132CK", 100.23),

new Account("Ashurova", "Lobar", "454MM", 1923.85),

new Account("Latipov", "Sardor", "434СК", -123.32),

new Account("Qurbonov", "Zokir", "543ММ", 5017.40),

new Account("Sattorov", "O'ral", "547CD", 34955.79),

new Account("Yusufov", "Umidjon", "843СК", 345.00),

new Account("Pitinov", "Ozodbek", "156СК", 423.32),

new Account("Sodikov", "Abubakir", "325ММ", 567.40),

new Account("Bahromov", "Ozodbek", "156CD", 145.19),

new Account("Bahromov", "Ozodbek", "897CK", 3223.15),

};

// Tartiblangan tartibda bank hisob varaqlari to'g'risida ma'lumot olish uchun so'rov yaratish.



//Ushbu ma'lumotni avval ism, keyin familiya va hisob balansi bo'yicha tartiblash.

var accinfo = from acc in accounts

orderby acc.Ism, acc.Fam, acc.Balans

select acc;

Console.WriteLine("Saralangan ma'lumotlar: ");

string str = "";

// So'rovni ishga tushirish va natijalarini ko'rsatish,

int i = 1;

foreach (Account acc in accinfo)

{

if (str != acc.Fam)



{

str = acc.Fam;

}

Console.WriteLine(i + " {0}, {1}\tHisob nomeri: {2}, {3}",



acc.Ism, acc.Fam, acc.AccountNumber, acc.Balans);

i++;


}

Console.ReadKey();

}

}

Parallel linq metodlari



Integrated Query (LINQ) deklarativ modelni taqdim etadi,kabi ma'lumotlar ketma-ketligini so'rashga imkon beradi xotiradagi to'plamlar, XML hujjatlari va ma'lumotlar bazasi ma'lumotlari. Xarakter Ko'p so'rovlar ularni osongina parallellashtirish mumkinligini anglatadi. Ko'pchilik so'rovlar har bir element uchun bir xil harakatlar guruhini bajaradi yig'ish. Agar ushbu harakatlarning barchasi mustaqil bo'lsa, nojo'ya ta'sirlarsiz Ko'pincha siz ularni paydo bo'lish tartibidan kelib chiqadigan effektlarni ko'rishingiz mumkin birgalikda ishlash orqali samaradorlikning katta o'sishiga erishish bir nechta protsessor yadrolari o'rtasida.

Ushbu .NET Framework versiyasining 4.0 skriptlarini qo'llab-quvvatlash uchun

Parallel LINQ (PLINQ) bilan tanishtirildi. PLINQ xuddi shu standartni ta'minlaydi

so'rov operatorlari va LINQ kabi so'rovlar ifoda sintaksisi. Asosiyfarq shundaki, dastlabki ma'lumotlarni qismlarga bo'lish mumkin ma'lumotlarning dekompozitsiyasidan foydalanish. Bu kichik ma'lumotlar guruhlari potentsial barcha mavjud CPU yadrolari tomonidan boshqariladi. Plinq bor bu to'g'ridan-to'g'ri almashtirish emasligini anglatuvchi ba'zi cheklovlar LINQ so'rovlar uchun standart parametr bo'lolmaydi. Kalit Cheklovlar soni individualni qayta ishlashning yon ta'siri manba ketma-ketligidagi elementlar, masalan, ishlov berish natijasida Bir elementning boshqasiga bog'liqligi oldindan aytib bo'lmaydigan 90 ga olib kelishi mumkin natijalar. Buning sababi asl elementlar odatda yo'q asl tartibda ishlov beriladi. Ikkinchi cheklov PLINQ xotira ichidagi ma'lumotlarga o'xshashlikni ta'minlaydi to'plamlar yoki oldindan yuklangan XML. LINQ so'rovini parallel ravishda qanday o'zgartirish mumkinligini ko'rsatish ishlov berish, avval siz seriya versiyasini olishingiz kerak. Quyidagi kodda Juda oddiy so'rov ko'rsatilgan. Bu erda biz o'z ichiga olgan qatordan boshlaymiz birdan o'ngacha bo'lgan butun sonlar. Select operatoridan foydalanib, biz loyihalashtiramiz uni asl kvadratlarini o'z ichiga olgan yangi ketma-ketlikka qadriyatlar.




Download 28,31 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish