Mavzu: Parallel Linq metodlari



Download 37.08 Kb.
Sana15.11.2020
Hajmi37.08 Kb.

Mavzu: Parallel Linq metodlari

Reja


  1. Kirish

  2. Linq tili haqida tushuncha

  3. Parallel linq metodlari

  4. Xulosa

  5. Adabiyotlar

Kirish

LINQ so’zining qisqartmasi Language-Integrated Query, ya'ni integratsiyalashgan so'rovlar tili degan ma'noni anglatadi. Ushbu kontsepsiya ma'lumotlar bazasidan ma'lumot olish imkonini beruvchi bir qator vositalarni o'z ichiga oladi. Ma'lumki, ma'lumotlarni olish ko'plab dasturlarning muhim qismidir. Misol uchun, dastur mijozlar ro'yxatidan ma'lumot olishi, mahsulot katalogidagi ma'lumotlarni qidirishi yoki xodim kiritilgan hisobga olish hujjatiga kirishi mumkin. Odatda, bunday ma'lumotlar ilovadan alohida mavjud bo'lgan ma'lumotlar bazasida saqlanadi. Shunday qilib, mahsulot katalogi Relational ma'lumotlar bazasida saqlanishi mumkin. Oldin bunday ma'lumotlar bazasi bilan ishlash uchun tuzilgan so'rovlar (SQL) tilida so'rovlarni shakllantirish kerak edi. Va boshqa ma'lumot manbalariga kirish uchun, masalan, XML formatida alohida yondashuv talab qilindi. Shuning uchun, 3.0 versiyasiga qadar C# da o'xshash so'rovlarni qo'llab-quvvatlash yo'q edi. Biroq, bu holat LINQni qabul qilganidan keyin o'zgardi.

LINQ har qanday LINQ-mos keluvchi ma'lumot manbai uchun so'rovlarni yaratishga imkon beruvchi vositalar hisoblanadi. Shu bilan birga, so'rovlarni shakllantirish uchun ishlatiladigan sintaksis ma'lumot manbai turiga qaramasdan o'zgarishsiz qolmoqda. Bu, xususan, Relational ma'lumotlar bazasiga so'rov yaratish uchun zarur bo'lgan sintaksisning massivda saqlangan ma'lumotlar so'rovining sintaksisidan deyarli farq qilmaydi. Buning uchun endi manbadan ma'lumotlarni olish mexanizmi C# ga nisbatan SQL yoki boshqa tashqi vositalarga murojaat qilishning hojati yo'q. So'rovlarni shakllantirish qobiliyati bundan buyon C# tiliga to'liq integratsiyalangan.

SQL-dan tashqari, LINQ XML fayllari va ma'lumotlar to'plamlari bilan birgalikda ADO.NET Dataset texnologiyalarini ishlatilishi mumkin. Shunday qilib, LINQ vositalari, umuman, ma'lumotlarga bir xil kirishni ta'minlaydi. Va bunday printsipning o'zi juda samarali bo'lsada, LINQning afzalliklari bu bilan

chegaralanmaydi. LINQ ma'lumotlar bazalariga kirishni an'anaviy tashkil qilishdan tashqari, turli xil dasturiy vazifalarni hal qilish uchun boshqacha fikrlashni taklif qiladi. Va nihoyat, LINQ asosida ko'plab yechimlar ishlab chiqilishi mumkin.

C# tilida LINQ aslida tildir. Shuning uchun, linqni ko'rib chiqish mavzusi juda keng va ko'plab vositalar, imkoniyatlar va muqobillarni o'z ichiga oladi. Ushbu mavzuda LINQ vositalarining batafsil tavsifi berilgan bo'lsa-da, bu erda ularning barcha imkoniyatlarini, xususiyatlarini va dasturlarini ko'rib chiqish imkoniyati yo’q. Shu nuqtai nazardan, ushbu bo'lim LINQ ning asosiy elementlariga qaratilgan bo'lib, ulardan foydalanish ko'plab misollarda namoyish etiladi. Va uzoq muddatda LINQ mustaqil ravishda va batafsil o'rganish kerak bo'lgan kichik tizimdir.

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. LINQ kechiktirilgan ijrodan foydalanganligi sababli, yangi ma'lumotlar bo'lguncha ketma-ketlik hosil bo'lmaydi mavjud. Bu shuni anglatadiki, oldingi tsikl so'rovni bajarishga majbur qiladi va natijalarni ko'rsatadi.

 int [] ketma-ketlik = Sanoqli. Range (1, 10) .ToArray ();

 var kvadratchalar = ketma-ketlik. Tanlang (x => x * x);

 oldindan belgilash (kvadratlar ichida kvadrat)

 {

         Konsol .Write (kvadrat "" ");



 }

 Console.ReadLine ();

Natija: 1 4 9 16 25 36 49 64 81 100

LINQ interfeysni amalga oshiradigan ketma-ketliklar bilan ishlaydi Sanab bo'lmaydigan . PLINQ-dan foydalanishni xohlayotganimizni ko'rsatish uchun biz statik AsParallel usuldan foydalanishi kerak. Bu usul IEnumerable kengaytmasi, shuning uchun uni har qanday narsaga qo'llash mumkin. LINQ operatsiyalarini qo'llab-quvvatlaydigan ketma-ketlik. U ob'ektni qaytaradi

ParallelQuery turini kiriting. Agar parallel ketma-ketlik bo'lsa

ma'lumotlar, siz uni LINQ operatsiyalari uchun manba sifatida foydalanishingiz mumkin, har qanday boshqa ketma-ketlikda bo'lgani kabi. PLINQ bu kabi ma'lumotlarni ajratadi samarali parallel ishlov berishni ta'minlash usuli. So'rovni parallellashtirish uchun qo'ng'iroqni ko'rsatilganidek AsParallel qo'shing quyida:

var kvadratchalar = ketma-ketlik.AsParallel (). Tanlang (x => x * x);

Natija: 100 1 25 36 49 64 81 4 9 16

Siz PLINQ so'rovi natijalari to'g'ri ekanligini payqagan bo'lishingiz mumkin, ammo ular ketma-ketlikni ishlatishdan ko'ra boshqa tartibda paydo bo'ldi LINQ versiyasi. Bu parallel ravishda ishlaydigan so'rovlarning qo'shimcha mahsuloti. LINQ Ba'zi hollarda natijalarni buyurtma qilish muhim emas, ayniqsa, agar ma'lumotlar keyinchalik saralangan bo'lsa standart buyurtma operatori yordamida OrderBy yoki ba'zilari imperativ usul. Boshqa hollarda, asl nusxani buzish buyurtma halokatli bo'lishi mumkin. Bunday vaziyatlarda sizga kerak kirish tartibiga muvofiq natijalar tartibini saqlash. Plinq parallel ravishda ma'lumotlar manbai tartibini saqlashni qo'llab-quvvatlaydi AsOrdered usuli yordamida. Ushbu usul faqat ishlatilishi kerak. natijalar tartibini saqlash kerak bo'lganda, bu mumkin

so'rovlaringizni sezilarli darajada pasaytiradi. Quyidagi so'rov AsParallel-dan keyin AsOrdered usulidan foydalanadi natijalar tartibini ta'minlash.

var kvadratchalar = ketma-ketlik.AsParallel (). AsOrdered () ni tanlang (x => x * x);

Natija: 1 4 9 16 25 36 49 64 81 100

LINQ yordamida ketma-ket so'rovni bajarganingizda, har qanday qayta ishlangan ma'lumotlar elementi istisnoga olib kelishi mumkin. Qachon istisno bekor qilinadi, so'rov darhol bajarilishini to'xtatadi. Bilan PLINQ bir vaqtning o'zida bir nechta operatsiyalarni bajarishi mumkin.

Sintaksis

• ParallelEnumerable.Aggregate (func)

• ParallelEnumerable.Aggregate (, funktsiya) ParallelEnumerable.Aggregate (urug', yangilanishAccumulatorFunc, kombinatAccumulatorsFunc,natija selektor)

•ParallelEnumerable.Aggregate (seedFactory, updateAccumulatorFunc, kombinatKkumulyatorlariFunc, natija selektori)

• ParallelEnumerable.All (predikat)

• ParallelEnumerable.Any ()

• ParallelEnumerable.Any (predikat)

• ParallelEnumerable.AsEnumerable ()

• ParallelEnumerable.AsOrdered ()

• ParallelEnumerable.AsParallel ()

• ParallelEnumerable.AsSequential ()

• ParallelEnumerable.AsUnordered ()

• ParallelEnumerable.Average (selektor)

• ParallelEnumerable.Cast ()

• ParallelEnumerable.Concat (ikkinchi)

•ParallelEnumerable.Contains (value)

•ParallelEnumerable.Contains (qiymat, taqqoslash)

• ParallelEnumerable.Count ()

•ParallelEnumerable.Count (predikat)

• ParallelEnumerable.DefaultIfEmpty ()

• ParallelEnumerable.DefaultIfEmpty (asl qiymati)

• ParallelEnumerable.Distinct ()

• ParallelEnumerable.Distinct (taqqoslagich)

• ParallelEnumerable.ElementAt (indeks)

• ParallelEnumerable.ElementAtOrDefault (indeks)

• ParallelEnumerable.Empty ()

• ParallelEnumerable.Except (ikkinchi)

•ParallelEnumerable.Except (ikkinchi, qiyoslovchi)

• ParallelEnumerable.First ()

• ParallelEnumerable.First (predict)

• ParallelEnumerable.FirstOrDefault ()

• ParallelEnumerable.FirstOrDefault (predikat)

• ParallelEnumerable.ForAll (harakat)

• ParallelEnumerable.GroupBy (keySelector)

• ParallelEnumerable.GroupBy (keySelector, qiyoslovchi)

• ParallelEnumerable.GroupBy (keySelector, elementSelector)

• ParallelEnumerable.GroupBy (keySelector, elementSelector, qiyosiy)

• ParallelEnumerable.GroupBy (keySelector, resultSelector)

ParallelEnumerable.GroupBy (keySelector, resultSelector, qiyosiy)

• ParallelEnumerable.GroupBy (keySelector, elementSelector, policySelector)

• ParallelEnumerable.GroupBy (keySelector, elementSelector, ережalar selektori, taqqoslash)

• ParallelEnumerable.GroupJoin (ichki, tashqiKeySelektor, ichkiKeySelektor, natija to'plami)

•ParallelEnumerable.GroupJoin (ichki, tashqiKeySelektor, ichkiKeySelektor, natija selektori,qiyoslovchi)

• ParallelEnumerable.Intersect (ikkinchi)

•ParallelEnumerable.Intersect (ikkinchi, taqqoslagich)

• ParallelEnumerable.Join (ichki, tashqi klaviatura, ichki klaviatura, natija selektori)

•ParallelEnumerable.Join (ichki, tashqiKeySelektor, ichkiKeySelektor, natija selektori,qiyoslovchi)

• ParallelEnumerable.Last ()

• ParallelEnumerable.Last (predikat)

• ParallelEnumerable.LastOrDefault ()

• ParallelEnumerable.LastOrDefault (predikat)

• ParallelEnumerable.LongCount ()

• ParallelEnumerable.LongCount (predikat)

• ParallelEnumerable.Max ()

• ParallelEnumerable.Max (selektor)

• ParallelEnumerable.Min ()

• ParallelEnumerable.Min (selektor)

• ParallelEnumerable.OfType ()

• ParallelEnumerable.OrderBy (keySelector)

• ParallelEnumerable.OrderBy (keySelector, qiyoslovchi)

• ParallelEnumerable.OrderByDescending (keySelector)

• ParallelEnumerable.OrderByDescending (keySelector, qiyosiy)

•ParallelEnumerable.Range (boshlash, hisoblash)

• ParallelEnumerable.Repeat (element, hisoblash)

• ParallelEnumerable.Reverse ()

• ParallelEnumerable.Selek (tanlang)

• ParallelEnumerable.SelectMany (selektor)

• ParallelEnumerable.SelectMany (collectionSelector, resultSelector)

• ParallelEnumerable.SequenceEqual (ikkinchi)

• ParallelEnumerable.SequenceEqual (ikkinchi, taqqoslovchi)

• ParallelEnumerable.Single ()

• ParallelEnumerable.Single (predikat)

• ParallelEnumerable.SingleOrDefault ()

• ParallelEnumerable.SingleOrDefault (predikat)

• ParallelEnumerable.Skip (hisoblash)

• ParallelEnumerable.SkipWhew (predikat)

• ParallelEnumerable.Sum ()

• ParallelEnumerable.Sum (selektor)

• ParallelEnumerable.Take (hisoblash)

• Parallel ravishda sanab bo'ling.

• ParallelEnumerable.ThenBy (keySelector)

• ParallelEnumerable.ThenBy (keySelector, qiyoslovchi)

• ParallelEnumerable.ThenByDescending (keySelector)

• ParallelEnumerable.ThenByDescending (keySelector, qiyosiy)

• ParallelEnumerable.ToArray ()

• ParallelEnumerable. ToDordam (keySelector)

• ParallelEnumerable. ToDordam (keySelector, qiyosiy)

• ParallelEnumerable. ToDordam (elementSelector)

• ParallelEnumerable. ToDordam (elementSelector, taqqoslash)

• ParallelEnumerable.ToList ()

• ParallelEnumerable.ToLookup (keySelector)

• ParallelEnumerable.ToLookup (keySelector, qiyosiy)

• ParallelEnumerable.ToLookup (keySelector, elementSelector)

• ParallelEnumerable.ToLookup (keySelector, elementSelector, qiyosiy)

•ParallelEnumerable.Union (ikkinchi)

•ParallelEnumerable.Union (ikkinchi, taqqoslagich)

• ParallelEnumerable.Where (predikat)

• ParallelEnumerable.WithCancellation (bekor qilishToken)

•ParallelEnumerable.WithDegreeOfParallelism (darajasiOffarparalizm)

• ParallelEnumerable.WithExmissionsMode (performanceMode)

• ParallelEnumerable.WithMergeOptions (mergeOptions)

• ParallelEnumerable.Zip (ikkinchi, natija tanlagich)

Misollar


Oddiy misol

Ushbu misol PLINQ-dan 1 dan 10000 gacha bo'lgan juft sonlarni hisoblashda qanday ishlatilishini ko'rsatadi. Bir nechta iplardan foydalangan holda 10000. E'tibor bering, natijada ro'yxat buyurtma qilinmaydi!

var ketma-ketligi = Enumable.Range (1, 10000);

var evenNumbers = ketma-ketlik.AsParallel ()

. (Qayerda (x => x% 2 == 0)

.To‘plam ();

// evenNumbers = {4, 26, 28, 30, ...}

// Buyurtma har xil versiyalarda o'zgaradi

DegreeOfParallelism bilan

Parallellik darajasi - bajariladigan vazifalarning maksimal bajarilish soni

so'rovni qayta ishlash uchun ishlatiladi.

var ketma-ketligi = Enumable.Range (1, 10000);

var evenNumbers = ketma-ketlik.AsParallel ()

Paralellik darajasi bilan. (4)

.Qaerda (x => x% 2 == 0);

AsOrdered

Ushbu misol PLINQ-dan 1 dan 1 gacha bo'lgan juft sonlarni hisoblashda qanday ishlatilishini ko'rsatadi

Bir nechta iplardan foydalangan holda 10000. Olingan ro'yxatda buyurtma saqlanadi, ammo yodda tuting

AsOrdered ko'plab elementlarning ishlashiga zarar etkazishi mumkin, shuning uchun buyurtma qilinmagan ishlov berish

iloji bo'lsa afzal ko'riladi.

var ketma-ketligi = Enumable.Range (1, 10000);

var evenNumbers = ketma-ketlik

.Ordered ()

. (Qayerda (x => x% 2 == 0)

.To‘plam ();

// evenNumbers = {2, 4, 6, 8, ..., 10000}

AsUnordered

Buyurtma qilingan ketma-ketliklar ko'p sonli elementlar bilan ishlashda ishlashga zarar etkazishi mumkin. Kimga

buni yumshatish uchun ketma-ket buyurtma kerak bo'lmaganda AsUnordered-ga qo'ng'iroq qilish mumkin.

var ketma-ketligi = Sanab bo'lmaydigan.Range (1, 10000) .Telefin (x => -1 * x); // -1, -2, ...

var evenNumbers = ketma-ketlik

.OrderBy (x => x)

.Tashlang (5000)

.AsUnordered ()

. (X => x% 2 == 0) // bu satr buyurtma orqali ta'sirlanmaydi

.To‘plam ();

Xulosa

Xulosa qilib shuni aytish mumkinki bu masalalarda Linq dasturlash tili bilan bog’liq vaziyatlarda obektiv yondashiladi. Shu boisdan yuqori tillardan farqi juda kattaligi bilan ajralib turadi. Shuning uchun har qaysi dasturlash tilida o’zining metodi bo’ladi.

Adabiyotlar

1. Вагнер, Билл С# Эффективное программирование / Билл Вагнер. - М.: ЛОРИ, 2013. - 320 c.

2. Зиборов, В.В. Visual C# 2012 на примерах / В.В. Зиборов. - М.: БХВ-Петербург, 2013. - 480 c.

3. Подбельский, В. В. Язык С#. Базовый курс / В.В. Подбельский. - М.: Финансы и статистика, Инфра-М, 2011. - 384 c.

4. Прайс, Джейсон Visual C# 2.0. Полное руководство / Джейсон Прайс , Майк Гандэрлой. - М.: Век +, Корона-Век, Энтроп, 2010. - 736 c.

5. Рихтер, Джеффри CLR via C#. Программирование на платформе Microsoft .NET Framework 4.0 на языке C# / Джеффри Рихтер. - М.: Питер, 2013. - 928 c.



6. Троелсен, Эндрю Язык программирования C# 5.0 и платформа .NET 4.5 / Эндрю Троелсен. - М.: Вильямс, 2015. - 486 c.
Download 37.08 Kb.

Do'stlaringiz bilan baham:




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

    Bosh sahifa
davlat universiteti
ta’lim vazirligi
O’zbekiston respublikasi
maxsus ta’lim
zbekiston respublikasi
o’rta maxsus
davlat pedagogika
axborot texnologiyalari
nomidagi toshkent
pedagogika instituti
texnologiyalari universiteti
navoiy nomidagi
guruh talabasi
samarqand davlat
toshkent axborot
nomidagi samarqand
toshkent davlat
haqida tushuncha
ta’limi vazirligi
xorazmiy nomidagi
Darsning maqsadi
vazirligi toshkent
Toshkent davlat
tashkil etish
Alisher navoiy
rivojlantirish vazirligi
Ўзбекистон республикаси
matematika fakulteti
pedagogika universiteti
sinflar uchun
Nizomiy nomidagi
таълим вазирлиги
tibbiyot akademiyasi
maxsus ta'lim
o’rta ta’lim
bilan ishlash
ta'lim vazirligi
fanlar fakulteti
махсус таълим
kommunikatsiyalarini rivojlantirish
umumiy o’rta
Referat mavzu
fanining predmeti
haqida umumiy
Navoiy davlat
fizika matematika
universiteti fizika
Buxoro davlat
malakasini oshirish
davlat sharqshunoslik
Samarqand davlat