14.02.2017 Views

. Стиллмен, Дж. Грин - Изучаем C#, 2-е издание

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

UNQ<br />

Пр<strong>е</strong>дАО)к<strong>е</strong>ни<strong>е</strong> join<br />

Д ж и м м и собрал ц<strong>е</strong>лую колл <strong>е</strong> кц и ю ко м и ксо в и хот<strong>е</strong>л бы ср а внить ц<strong>е</strong>ны на н и х с ц<strong>е</strong>нам и в каталог<strong>е</strong> Гр<strong>е</strong>га,<br />

ч т о б ы п о н я ть , н<strong>е</strong> п<strong>е</strong>р<strong>е</strong>платил л и он. Д ля записи своих расходов о н создал класс P u r c h a s e с двумя<br />

а втом атич<strong>е</strong>ски м и свойствам и I s s u e и Price. П <strong>е</strong> р <strong>е</strong> ч<strong>е</strong>нь куп л <strong>е</strong> н н ы х им ко м и ксо в находится в колл<strong>е</strong>кц ии<br />

L i s t < P u r c h a s e > , ко торая назы ва<strong>е</strong>тся p u r c h a s e s . К а к ж <strong>е</strong> <strong>е</strong>му т<strong>е</strong> п<strong>е</strong>рь осущ <strong>е</strong>ствить сравн<strong>е</strong>ни<strong>е</strong> с ц<strong>е</strong>нам и<br />

из каталога Гр<strong>е</strong>га?<br />

П р <strong>е</strong> д л о ж <strong>е</strong> н и <strong>е</strong> j o i n п о з в о л и т с к о м б и н и р о в а т ь д а н н ы <strong>е</strong> и з д в у х к о л л <strong>е</strong> к ц и й в <strong>е</strong> д и н ы й запрос. Э то д<strong>е</strong>ла<strong>е</strong>тся<br />

пут<strong>е</strong>м п о и ска в п <strong>е</strong> р в о й к о л л <strong>е</strong> кц и и со в падаю щ и х з н а ч <strong>е</strong> н и й со в то р о й . ( L IN Q д<strong>е</strong>ла<strong>е</strong>т э то эф ф <strong>е</strong> ктивн<br />

о - сравнива<strong>е</strong>т то л ь ко т<strong>е</strong> п а р ы , ко то р ы <strong>е</strong> н у ж н о .) В кач<strong>е</strong>ств<strong>е</strong> р<strong>е</strong>зультата вы водятся совпадаю щ и<strong>е</strong> пары .<br />

П о сл <strong>е</strong> п р <strong>е</strong> д л о ж <strong>е</strong> н и я f r o m вм <strong>е</strong>сто к р и т <strong>е</strong> р и я<br />

о тб о р а р<strong>е</strong>зультатов н а п и ш и т<strong>е</strong> :<br />

j o i n пат<strong>е</strong> i n c o lle c tio n<br />

И м я пат<strong>е</strong> назнача<strong>е</strong>тся чл<strong>е</strong>нам , к о то р ы <strong>е</strong> извл<strong>е</strong>каю<br />

тся из о б ъ <strong>е</strong> д и н <strong>е</strong> н н о й к о л л <strong>е</strong> к ц и и на<br />

каж д о й и т <strong>е</strong> р а ц и и цикла. Зат<strong>е</strong>м вы использу<strong>е</strong>т<strong>е</strong><br />

<strong>е</strong> го в п р <strong>е</strong> д л о ж <strong>е</strong> н и и where.<br />

Ажимми присо<strong>е</strong>диня<strong>е</strong>т<br />

к комиксам из<br />

колл<strong>е</strong>кции purchases<br />

список кцпл<strong>е</strong>ннш им<br />

комиксов.<br />

Аанны<strong>е</strong> Д ж « м м и<br />

fS u d e колл<strong>е</strong>кции объ<strong>е</strong>ктов Purchase,<br />

которая иазыва<strong>е</strong>тсй purchases.<br />

class Purchase {<br />

public int Issue<br />

{ get; set; }<br />

public decimal Price<br />

{ get; set; )<br />

)<br />

О<br />

Зат<strong>е</strong>м<br />

сл<strong>е</strong>дую т п р <strong>е</strong> д л о ж <strong>е</strong> н и я<br />

w h e r e и orderby. Т ак ка к в<br />

р<strong>е</strong>зультат о б ы ч н о тр<strong>е</strong>бу<strong>е</strong>тся<br />

в к л ю ч и ть часть д а н н ы х из<br />

о д н о й ко л л <strong>е</strong> кц и и , а часть из<br />

д р у го й , в ко н ц <strong>е</strong> использу<strong>е</strong>тся<br />

пр<strong>е</strong>длож <strong>е</strong> н и <strong>е</strong> s e l e c t<br />

new,<br />

создаю щ <strong>е</strong><strong>е</strong> п ользо ват<strong>е</strong>льски й<br />

на б о р р<strong>е</strong>зультатов п р и пом о ­<br />

щ и а н о н и м н о го ти п а .<br />

o n c o m i c . I s s u e<br />

e q u a ls p u r c h a s e .I s s u e<br />

Посл<strong>е</strong> пр<strong>е</strong>длож<strong>е</strong>ния<br />

select new в фигурных<br />

скобках п<strong>е</strong>р<strong>е</strong>числ<strong>е</strong>ны<br />

данны<strong>е</strong>,, которы<strong>е</strong> сл<strong>е</strong>ду<strong>е</strong>т<br />

вклночить в р <strong>е</strong> -<br />

зильтат.<br />

Д обавим пр<strong>е</strong>длож <strong>е</strong> н и <strong>е</strong> o n , указы<br />

ваю щ <strong>е</strong><strong>е</strong> сп особ о б ъ <strong>е</strong>дин<strong>е</strong>ния<br />

ко л л <strong>е</strong> кц и й . Зат<strong>е</strong>м укаж <strong>е</strong>м им я п<strong>е</strong>рв<br />

о й к о л л <strong>е</strong> кц и и , клю ч<strong>е</strong>во<strong>е</strong> слово<br />

e q u a ls и им я в т о р о й ко л л <strong>е</strong> кц и и .<br />

s e l e c t new { c o m i c . N a m e ,<br />

c o m i c . I s s u e , p u r c h a s e .P r i c e }<br />

Iqcmo = rI пят<strong>е</strong> = “Johnnv America" I Price = 3600<br />

Issue = 1 ^ lame = “Rock and Roll” Price = 375<br />

1Issue = 57 name = “Hippie Madnless” Price = 13215 L<br />

дальш<strong>е</strong> ► 687

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!