www.wikidata.uk-ua.nina.az
LINQ angl Language Integrated Query zapiti integrovani v movu komponent Microsoft NET Framework yakij dodaye nativni mozhlivosti vikonannya zapitiv danih do mov sho vhodyat u NET Hocha porti isnuyut dlya PHP PHPLinq JavaScript linq js TypeScript linq ts i ActionScript ActionLinq zhoden z nih ne ye absolyutno ekvivalentnim LINQ v C de LINQ ne prosto dodatkova biblioteka a chastina movi LINQ rozshiryuye mozhlivosti movi dodayuchi do neyi virazi zapitiv sho ye shozhimi na tverdzhennya SQL ta mozhut buti vikoristani dlya zruchnogo otrimannya ta obrobki danih masiviv XML dokumentiv relyacijnih baz danih ta storonnih dzherel LINQ takozh viznachaye nabir imen metodiv sho nazivayutsya standartnimi operatorami zapitiv abo standartnimi operatorami poslidovnostej a takozh pravila perekladu sho maye vikoristovuvati kompilyator dlya perekladu tekuchih viraziv u zvichajni vikoristovuyuchi yih nazvu lyambda virazi ta anonimni tipi en Bagato konceptiv sho predstavleni u LINQ buli spershu viprobuvani u doslidnickomu proyekti Microsoft Cw LINQ buv vipushenij yak chastina NET Framework 3 5 19 listopada 2007 roku Zmist 1 Arhitektura LINQ v NET Framework 1 1 Standartni operatori zapitiv 1 2 Rozshirennya movi 1 3 Provajderi LINQ 1 3 1 LINQ to Objects 4 1 3 2 LINQ to XML 5 1 3 3 LINQ to SQL 6 1 3 4 LINQ to DataSets 7 2 PLINQ 8 3 Poperedniki 4 Primitki 5 PosilannyaArhitektura LINQ v NET Framework red Standartni operatori zapitiv red Dali opisano robotu operatoriv z kolekciyami Bagato operatoriv prijmayut u yakosti argumentu funkciyi Ci funkciyi mozhut buti predstavleni yak u viglyadi imenovanogo metodu tak i anonimnoyi funkciyi Nabir operatoriv zapitiv sho viznacheni v LINQ nadayetsya koristuvachu u viglyadi API Operatori zapitiv sho pidtrimuyutsya API 1 SelectDanij operator vikonuye proyekciyu na kolekciyu shob otrimati neobhidni chleni elementiv Koristuvach peredaye u yakosti parametru dovilnu funkciyu u viglyadi lyambda virazu sho proyektuye chleni danogo ob yektu Funkciya peredayetsya do operatora u viglyadi delegatu WhereOperator Where dozvolyaye viznachiti nabir predikativ sho vikonuyutsya nad kozhnim elementom kolekciyi ta vidkidaye elementi sho ne pidpadayut pid zadanu umovu z rezultuyuchogo naboru Predikat peredayetsya do operatora u viglyadi delegatu SelectManySelectMany vikoristovuyetsya dlya stvorennya vihidnoyi kolekciyi zgidno zadanoyi koristuvachem proyekciyi z vhidnih kolekcij Sum Min Max AverageDani operatori mozhut prijmayuti funkciyu yaka spivstavlyaye kozhne znachennya kolekciyi z pevnim chislom pislya chogo mozhna znajti yih sumu minimalne maksimalne abo serednye znachennya Perevantazheni versiyi danih metodiv ne prijmayut funkcij na vhid a vikonuyut vidpovidni diyi nad samimi elementami kolekciyi AggregateUzagalnenij operator Sum Min Max Vin prijmaye u yakosti argumentu funkciyu sho vkazuye yakim chinom treba poyednati dva elementi shob utvoriti promizhnij abo kincevij rezultat Dodatkovo mozhna zadati pochatkove znachennya Krim cogo mozhna zadati zavershalnu funkciyu sho peretvorit rezultat agregaciyi na finalne znachennya Join GroupJoinOperator Join vikonuye inner join shodo dvoh kolekcij oriyentuyuchis na spivpadayuchi klyuchi dlya ob yektiv z obidvoh kolekcij Vin prijmaye dvi funkciyi u viglyadi delegativ po odnij dlya kozhnoyi kolekciyi a potim zastosovuye yih do kozhnogo elementa vidpovidnoyi kolekciyi shob otrimati yih klyuchi Vin takozh otrimuye inshij delegat u yakomu koristuvach vkazuye yaki chleni vhidnih ob yektiv povinni mistitisya u rezultuyuchomu nabori Operator GroupJoin vikonuye group join Tak yak i operator Select rezultati z yednannya ye ekzemplyarami klasu chiyi polya zbigayutsya z polyami vhidnih ob yektiv abo ye yih pidmmnozhinoyu Take TakeWhileOperator Take povertaye pershi n elementiv kolekciyi todi yak TakeWhile povertaye ne bilshe n pershih poslidovnih elementiv sho pidpadayut pid umovi predikatu Skip SkipWhileAnalogichno do Take ta TakeWhile dani operatori vidpovidno propuskayut pershi n elementiv abo ne bilshe n pershih poslidovnih elementiv sho vidpovidayut predikatu OfTypeVikoristovuyetsya dlya otrimannya elementiv pevnogo tipu ConcatDanij operator konkatenuye dvi kolekciyi OrderBy ThenByOperator OrderBy dozvolyaye zadati poryadok sortuvannya elementiv v kolekciyi po pevnomu klyuchu Za umovchannyam sortuvannya vidbuvayetsya u poryadku zrostannya Dlya sortuvannya po spadannyu treba vikoristovuvati operator OrderByDescending ThenBy and ThenByDescending dozvolyayut zadati pravila sortuvannya pidposlidovnostej Sortuvannya vidbuvayetsya po klyuchu sho koristuvach peredav v yakosti delegatu ReverseDanij operator povertaye elementi kolekciyi v zvorotnomu poryadku GroupByOperator GroupBy prijmaye u yakosti parametru funkciyu sho po pevnomu klyuchu povertaye kolekciyu ob yektiv IGrouping lt Key Values gt dlya kozhnogo unikalnogo znachennya klyucha Ob yekti IGrouping mozhna vikoristati dlya perechislennya vsih elementiv z pevnim klyuchem DistinctOperator viluchaye dublikati elementiv z kolekciyi Perevantazhena versiya operatoru prijmaye u yakosti argumentu ob yekt sho zdijsnyuye perevirku elementiv na rivnist Union Intersect ExceptDani operatori vikoristovuyutsya shob vikonati operaciyi ob yednannya peretinu ta riznici nad dvoma poslidovnostyami Kozhen z nih maye perevantazhenu versiyu sho prijmaye ob yekt yakij pereviryaye na rivnist elementi kolekcij SequenceEqualSequenceEqual viznachaye chi usi elementi kolekcij sho znahodyatsya na odnakovij poziciyi ye rivnimi First FirstOrDefault Last LastOrDefaultDani operatori otrimuyut predikat u yakosti argumentu Operator First povertaye pershij element kolekciyi sho pidpadaye pid umovu Yaksho zh takogo elementa ne isnuye vikidayetsya viklyuchennya Operator FirstOrDefault diye tak samo yak First ale zamist viklyuchennya povertaye znachennya za umovchannyam vidpovidnogo tipu Operatori Last ta LastOrDefault vikonuyut analogichni operaciyi ale z ostannimi pidhodyashimi elementami u kolekciyi Single SingleOrDefaultOperator Single otrimuye predikat u yakosti argumentu ta povertaye yedinij element sho zadovolnyaye predikat Yaksho zh takih elementiv bilshe nizh odin abo nemaye vzagali vikidayetsya viklyuchennya Pri vikoristanni SingleOrDefault yaksho zhoden element u kolekciyi ne vidpovidaye predikatu to zamist viklyuchennya povertayetsya znachennya tipu za umovchannyam V usih inshih vipadkah diye tak samo yak i Single ElementAtDanij operator povertaye element sho maye vidpovidnij indeks u kolekciyi Any AllOperator Any pereviryaye chi hocha b odin element u kolekciyi vidpovidaye predikatu ta povertaye vidpovidne buleve znachennya Viklik Any bez predikatu poverne istinu yaksho v kolekciyi ye hocha b odin element Operator All pereviryaye chi vidpovidni predikatu absolyutno vsi elementi kolekciyi ContainsPereviryaye chi kolekciya mistit shukanij element CountPidrahovuye kilkist elementiv u danij kolekciyi Perevantazhenij variant prijmaye predikat u yakosti argumentu ta rahuye kilkist elementiv sho vidpovidayut predikatu Standartne API operatoriv zapitiv takozh nadaye mozhlivist konvertaciyi kolekcij do inshogo tipu AsEnumerable statichno tipizuye kolekciyu yak IEnumerable lt T gt AsQueryable statichno tipizuye kolekciyu yak IQueryable lt T gt ToArray stvoryuye masiv tipu T z vhidnoyi kolekciyi ToList stvoryuye kolekciyu tipu List lt T gt z vhidnoyi kolekciyi ToDictionary stvoryuye kolekciyu tipu Dictionary lt K T gt z vhidnoyi kolekciyi z indeksami tipu K Koristuvach peredaye u yakosti argumentu funkciyu proyekciyi sho povertaye klyuch dlya kozhnogo ob yektu ToLookup stvoryuye kolekciyu tipu Lookup lt K T gt z vhidnoyi kolekciyi z indeksami tipu K Koristuvach peredaye u yakosti argumentu funkciyu proyekciyi sho povertaye klyuch dlya kozhnogo ob yektu Cast konvertuye neuzagalnenu kolekciyu tipu IEnumerable v uzagalnenu IEnumerable lt T gt V inshomu vipadku konvertuye uzagalnenu kolekciyu z odnim parametrom tipu v kolekciyu z inshim parametrom Napriklad IEnumerable lt T gt v IEnumerable lt R gt privodyachi kozhen element tipu T do elementu tipu R V razi yaksho hocha b odin element kolekciyi ne mozhe buti privedenij do neobhidnogo tipu vikidayetsya viklyuchennya OfType konvertuye neuzagalnenu kolekciyu tipu IEnumerable v uzagalnenu IEnumerable lt T gt V inshomu vipadku konvertuye uzagalnenu kolekciyu z odnim parametrom tipu v kolekciyu z inshim parametrom Napriklad IEnumerable lt T gt v IEnumerable lt R gt namagayuchis privesti kozhen element tipu T do elementu tipu R U rezultuyuchij kolekciyi budut znahoditisya lishe ti elementi sho buli uspishno skonvertovani Rozshirennya movi red Z poyavoyu LINQ do mov programuvannya takozh buv dodanij sintaksichnij cukor shob polegshiti napisannya zapitiv Dani rozshirennya vklyuchayut v sebe taki Sintaksis zapitiv rozrobniki movi programuvannya mayut zmogu obrati bud yakij zruchnij sintaksis Ci klyuchovi slova povinni perekladatisya kompilyatorom do vidpovidnih viklikiv metodiv LINQ Neyavno tipizovani zminni dane pokrashennya dozvolilo ogoloshuvati zminni bez yavnogo zaznachennya yih tipiv Pochinayuchi z C 3 0 stalo mozhlivim vikoristovuvati klyuchove slovo var U VB9 0 dlya cogo isnuye klyuchove slovo Dim Taki ob yekti ye strogo tipizovanimi Anonimni tipi anonimni tipi dozvolyayut kompilyatoru avtomatichno stvoryuvati ta opracovuvati klasi sho mistyat lishe ogoloshennya poliv Ce ye zruchnim dlya takih operatoriv yak Select ta Join rezultat vikonannya yakih chasto vidriznyayetsya vid vhidnih tipiv Kompilyator vikoristovuye interfejsi tipiv dlya viznachennya poliv sho mayut mistitisya u vihidnomu klasi i generuye do nih metodi dostupu ta zmini dlya nih Inicializator ob yektu inicializatori ob yektiv dozvolyayut stvoryuvati ta inicializuvati polya ob yektu v odnij oblasti vidimosti sho mozhna vikoristovuvati v operatorah Join ta Select Lyambda virazi lyambda virazi dozvolyayut stvoryuvati kompaktni predikati abo funkciyi proyekciyi Voni peredayutsya u funkciyi u viglyadi delegativ abo derev viraziv zalezhno vid provajdera zapitiv Napriklad u zapiti sho povertaye vsi ob yekti zi znachennyam SomeProperty menshim nizh 10 tipi zminnih result ta results vivodyatsya kompilyatorom vidpovidno do signatur vikoristanih metodiv var results from c in SomeCollection where c SomeProperty lt 10 select new c SomeProperty c OtherProperty foreach var result in results Console WriteLine result Analogichnij zapit takozh mozhna podati u nastupnomu viglyadi var results SomeCollection Where c gt c SomeProperty lt 10 Select c gt new c SomeProperty c OtherProperty results ForEach x gt Console WriteLine x ToString Provajderi LINQ red LINQ nadaye mozhlivist pracyuvati z riznimi dzherelami danih Dlya cogo isnuyut provajderi 2 Bud yakij rozrobnik mozhe napisati vlasnij provajder dlya LINQ 3 LINQ to Objects 4 red Provajder LINQ to Objects vikoristovuyetsya dlya kolekcij sho znahodyatsya v pam yati ta zastosovuye dlya yih obrobki lokalnij funkcional LINQ Kod zgenerovanij danim provajderom realizuye arhitekturnij shablon Sequence i dozvolyaye lokalno vikonuvati operaciyi nad kolekciyami IEnumerable lt T gt Potochna realizaciya LINQ to Objects pereviryaye yaki interfejsi realizovani u tipi sho vhodit do kolekciyi shob vikoristati yih dlya shvidkogo vikonannya tih chi inshih zapitiv yaksho voni pidtrimuyutsya tipom pid chas vikonannya LINQ to XML 5 red Provajder LINQ to XML konvertuye XML dokument v kolekciyu ob yektiv XElement nad yakoyu vikonuyetsya zapit vikoristovuyuchi lokalnij funkcional LINQ LINQ to SQL 6 red Provajder LINQ to SQL dozvolyaye vikonuvati zapiti do bazi danih Microsoft SQL Server Oskilki dani sho zberigayutsya u SQL Server zazvichaj znahodyatsya na inshomu serveri ta SQL Server maye svij vlasnij funkcional po vikonannyu zapitiv LINQ to SQL ne vikoristovuye lokalni mozhlivosti LINQ Zamist cogo virazi LINQ perekladayutsya u zapiti na movi SQL ta vidpravlyayutsya do SQL Server yakij obroblyaye ci zapiti ta povertaye rezultat yaksho neobhidno Odnak oskilki SQL Server ye relyacijnoyu bazoyu danih a LINQ pracyuye z ob yektami movi programuvannya neobhidno spivstaviti vidpovidni dani Dlya cogo LINQ to SQL takozh realizuye specialnij frejmvork Spivstavlennya vidbuvayetsya ogoloshuyuchi klasi yaki ye analogami tablic u bazi danih i mistyat v sobi vsi atributi tablici abo yih pidmnozhinu Vidpovidnist mizh polyami klasu ta atributami u tablici vstanovlyuyetsya cherez atributi Napriklad Table Name Customers public class Customer Column IsPrimaryKey true public int CustID Column public string CustName Danij klas spivstavlyayetsya z tabliceyu Customers ta mistit v sobi 2 polya sho vidpovidayut dvom kolonkam tablici LINQ to DataSets 7 red Oskilki provajder LINQ to SQL pracyuye lishe z SQL Server dlya pidtrimki inshih baz danih stvoreno LINQ to DataSets Danij provajder vikoristovuye mozhlivosti ADO NET dlya vstanovlennya komunikaciyi z bazoyu danih LINQ to DataSets vikonuye zapiti nad danimi sho mistyatsya v naborah danih ADO NET PLINQ 8 red Pochinayuchi z chetvertoyi versiyi NET Framework vklyuchaye v sebe PLINQ Parallel LINQ sho realizuye vikonannya LINQ zapitiv paralelno Bud yakij klas sho realizuye interfejs IEnumerable lt T gt mozhe skoristatisya perevagami PLINQ viklikavshi metod rozshirennya AsParallel lt T gt this IEnumerable lt T gt sho viznachenij u klasi ParallelEnumerable prostoru imen System Linq PLINQ mozhe vikonuvati chastini zapitu odnochasno v riznih potokah sho dozvolyaye otrimati rezultat shvidshe Poperedniki red Bagato koncepcij yaki buli vvedeni v LINQ spochatku buli viprobuvani v naukovo doslidnomu proekti Microsoft Cw ranishe vidomomu pid kodovimi imenami X X sharp ta Xen Jogo perejmenuvali na Cw pislya togo yak v nogo bulo integrovano inshu doslidnicku movu Polyphonic C na osnovi chislennya ob yednan en Cw namagayetsya zrobiti shovisha danih taki yak bazi danih ta XML dokumenti dostupnimi z takoyu zh legkistyu i bezpekoyu tipiv yak tradicijni tipi danih na zrazok ryadki ta masivi Bagato cih idej buli uspadkovani vid poperednogo proektu inkubaciyi v komandi WebData XML pid nazvoyu X ta Xen Cw takozh vklyuchaye novi konstrukciyi dlya pidtrimki konkurentnogo programuvannya ci osoblivosti v osnovnomu buli otrimani z poperednogo proektu Polyphonic C 9 Vpershe dostupni v 2004 funkciyi Cw buli vikoristani Microsoft pri stvorenni LINQ vipushenogo v 2007 v NET versiyi 3 5 10 Primitivi konkurentnosti takozh vipusheni v desho modifikovanij formi v biblioteci Joins en dlya C ta inshih NET mov vid Microsoft Research 11 Primitki red Classification of Standard Query Operators by Manner of Execution C docs microsoft com en us Arhiv originalu za 7 travnya 2018 Procitovano 6 travnya 2018 Introduction to LINQ C docs microsoft com en us Arhiv originalu za 7 travnya 2018 Procitovano 6 travnya 2018 Walkthrough Creating an IQueryable LINQ Provider msdn microsoft com en us Arhiv originalu za 7 travnya 2018 Procitovano 6 travnya 2018 LINQ to Objects C docs microsoft com en us Arhiv originalu za 7 travnya 2018 Procitovano 6 travnya 2018 LINQ to XML C docs microsoft com en us Arhiv originalu za 7 travnya 2018 Procitovano 6 travnya 2018 LINQ to SQL docs microsoft com en us Arhiv originalu za 5 kvitnya 2018 Procitovano 6 travnya 2018 LINQ to DataSet docs microsoft com en us Arhiv originalu za 7 travnya 2018 Procitovano 6 travnya 2018 Parallel LINQ PLINQ docs microsoft com en us Arhiv originalu za 7 travnya 2018 Procitovano 6 travnya 2018 Eichert Steve Wooley James B Marguerie Fabrice 2008 LINQ in Action Manning s 56 57 as reported in the Google Books search link the book does not have page numbers ISBN 9781638354628 Concepts behind the C 3 0 language Articles TomasP Net Arhivovano 2007 02 12 u Wayback Machine The Joins Concurrency Library Procitovano 8 chervnya 2007 Posilannya red Programa dlya interaktivnogo napisannya ta testuvannya zapitiv LINQ Arhivovano 5 travnya 2018 u Wayback Machine Pidruchnik LINQ Arhivovano 13 serpnya 2021 u Wayback Machine Otrimano z https uk wikipedia org w index php title LINQ amp oldid 41448390