. Стиллмен, Дж. Грин - Изучаем 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