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.

вот поч<strong>е</strong>му джимми любит LINQ<br />

Унив<strong>е</strong>рсальность LINQ<br />

В ы м ож <strong>е</strong>т<strong>е</strong> н<strong>е</strong> то л ь ко извл<strong>е</strong>кать отд<strong>е</strong>льны <strong>е</strong> эл<strong>е</strong>м <strong>е</strong>нт<br />

ы ко л л <strong>е</strong> кц и и , н о и р<strong>е</strong>дакти р о вать и х . С г<strong>е</strong> н <strong>е</strong> р и р о ­<br />

вав р<strong>е</strong>зультат, L IN Q п р<strong>е</strong>доставл я<strong>е</strong>т набор м<strong>е</strong>тодов<br />

для р а б о ты с н им . То <strong>е</strong>сть вы получа<strong>е</strong>т<strong>е</strong> и н стр ум <strong>е</strong> н ­<br />

т ы для управл<strong>е</strong>ния ваш и м и данны м и .<br />

Отр<strong>е</strong>дактиру<strong>е</strong>м р<strong>е</strong>зультаты запроса<br />

Д обавим в ко н <strong>е</strong> ц каж д ой с т р о к и в этом м ассив<strong>е</strong> д о п о л н и т<strong>е</strong> л ь н ую<br />

строку. В ы со зд а д и т<strong>е</strong> н а б о р м о д и ф и ц и р о в а н н ы х стр о к.<br />

s t r i n g [] s a n d w i c h e s = { " h a m a n d c h e e s e " ,<br />

v a r s a n d w i c h e s O n R y e =<br />

f r o m s a n d w i c h in s a n d w i c h e s<br />

s e l e c t s a n d w i c h + o n r y e '<br />

" t u r k e y a n d swiss'<br />

Вс<strong>е</strong> колл<strong>е</strong>кции р<strong>е</strong>ализуют инт<strong>е</strong>рф<strong>е</strong>йс<br />

IEnumerable — обратно<strong>е</strong> н<strong>е</strong>в<strong>е</strong>рно.<br />

Для принадл<strong>е</strong>жности к колл<strong>е</strong>кции<br />

нужно р<strong>е</strong>ализовывать <strong>е</strong>щ<strong>е</strong> и инт<strong>е</strong>рф<strong>е</strong>йс<br />

ICollection , то <strong>е</strong>сть м<strong>е</strong>тоды Add (),<br />

Clear( ) ,Contains( ) ,СоруТо() и Remove( ) ...<br />

Разум<strong>е</strong><strong>е</strong>тся, iCollection расширя<strong>е</strong>т<br />

1Епшп<strong>е</strong>гаЫ <strong>е</strong>. LINQ ж<strong>е</strong> работа<strong>е</strong>т с<br />

посл<strong>е</strong>доват<strong>е</strong>льностями знач<strong>е</strong>ний или объ<strong>е</strong>ктов,<br />

а н<strong>е</strong> с колл<strong>е</strong>кциями, а значит, вам тр<strong>е</strong>бу<strong>е</strong>тся<br />

объ<strong>е</strong>кт, р<strong>е</strong>ализующий 1 Е ш т<strong>е</strong> га Ы <strong>е</strong> < Т > .<br />

A d R<br />

P ^ m o w<br />

'salami w i t h m a y o " ,<br />

, " c h i c k e n c u t l e t " };<br />

f o r e a c h (var s a n d w i c h in s a n d w i c h e s O n R y e )<br />

C o n s o l e . W r i t e L i n e ( s a n d w i c h ) ;<br />

/Добавив on rye в кон<strong>е</strong>ц Р в З у Л Ь Т Э Т :<br />

каждой строки, мы<br />

положили вс<strong>е</strong> эл<strong>е</strong>м<strong>е</strong>нты<br />

^<br />

сэндвич<strong>е</strong>й на ржаной хл<strong>е</strong>б.<br />

Вычисл<strong>е</strong>ния внутри колл<strong>е</strong>кции<br />

П о м н и т<strong>е</strong> , м ы го в о р и л и , ч т о L IN Q о б <strong>е</strong>сп <strong>е</strong>чива<strong>е</strong>т ко л л <strong>е</strong> к ц и и<br />

м <strong>е</strong>тодам и расш и р<strong>е</strong>ния? Н <strong>е</strong> к о т о р ы <strong>е</strong> из н и х в<strong>е</strong>сьма п ол<strong>е</strong>зны .<br />

h a m a n d c h e e s e on r y e<br />

s a l a m i w i t h m a y o o n rye<br />

t u r k e y a n d s w i s s o n rye<br />

c h i c k e n c u t l e t o n r y e<br />

Изм<strong>е</strong>н<strong>е</strong>ния<br />

касаются<br />

р<strong>е</strong>зультатов<br />

запроса... но<br />

никак н<strong>е</strong> затрагивают<br />

эл<strong>е</strong>м<strong>е</strong>нты исходной<br />

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

или базы<br />

данных.<br />

R a n d o m r a n d o m = n e w R a n d o m ();<br />

L i s t < i n t > l i s t O f N u m b e r s = n e w L i s t < i n t > ();<br />

i n t l e n g t h = r a n d o m . N e x t ( 5 0 , 1 5 0 ) ;<br />

f o r (int i = 0; i < l e n g t h ; i++)<br />

l i s t O f N u m b e r s . A d d ( r a n d o m . N e x t (100));<br />

C o n s o l e . W r i t e L i n e ("Есть {0} ч и с <strong>е</strong> л " ,<br />

l i s t O f N u m b e r s .C ou n tо ); < r<br />

C o n s o l e . W r i t e L i n e ( " С а м о <strong>е</strong> м а л <strong>е</strong> н ь к о <strong>е</strong> {0}",<br />

l i s t O f N u m b e r s .Min О ); «6----<br />

C o n s o l e . W r i t e L i n e ( " С а м о <strong>е</strong> б о л ь ш о <strong>е</strong> {0}",<br />

l i s t O f N u m b e r s .Max() ) /<br />

C o n s o l e . W r i t e L i n e ("Их с у м м а р а в н а {0}", g;<br />

l i s t O f N u m b e r s .Suni() ) ;<br />

C o n s o l e . W r i t e L i n e ( " С р <strong>е</strong> д н <strong>е</strong> <strong>е</strong> а р и ф м <strong>е</strong> т и ч <strong>е</strong> с к о <strong>е</strong> {Ог^г}<br />

l i s t O f N u m b e r s .A verage О );<br />

Ни один из этих м <strong>е</strong>т о­<br />

дов н<strong>е</strong> им<strong>е</strong><strong>е</strong>т отнош<strong>е</strong>ния<br />

к NET... вс<strong>е</strong> они опр<strong>е</strong>а<strong>е</strong>л<strong>е</strong><br />

ны в UNQ. ^<br />

Э т о вс<strong>е</strong> м<strong>е</strong>тоды<br />

ния для iBnumerab\e

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

Saved successfully!

Ooh no, something went wrong!