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>зультатов запроса<br />

В ы уж <strong>е</strong> зна<strong>е</strong>т<strong>е</strong>, ч т о L IN Q п озволя<strong>е</strong>т разбивать<br />

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

это вы д<strong>е</strong>лали в сим улятор<strong>е</strong> улья. П о с м о тр и м<br />

бол<strong>е</strong><strong>е</strong> п о д р о б н о на то , как это работа<strong>е</strong>т.<br />

va r beeGroups =<br />

Н ачало запроса н и ч <strong>е</strong> м н<strong>е</strong> отл ича<strong>е</strong>тся о т д р у ги х —<br />

вы извл<strong>е</strong>ка<strong>е</strong>т<strong>е</strong> отд <strong>е</strong> л ьны х пч<strong>е</strong>л из ко л л <strong>е</strong> к ц и и<br />

w o r l d .B e e s объ<strong>е</strong>кта L i s t < B e e > .<br />

from be e in world.Bees<br />

< ^ o u p ^ e e b y b e e .Currentstate<br />

into be eGroup<br />

orderby be e G r o u p .Ke y<br />

© Сл<strong>е</strong>дую щ ая стр о ка запроса со д <strong>е</strong> р ж и т н о ­<br />

во<strong>е</strong> клю ч <strong>е</strong> во<strong>е</strong> слово group. О н о п р и к а з ы ­<br />

ва<strong>е</strong>т запросу возвращ ать группы пч<strong>е</strong>л. То<br />

<strong>е</strong>сть вм <strong>е</strong>сто о д н о й посл <strong>е</strong>доват<strong>е</strong>льности<br />

у нас буд<strong>е</strong>т ц <strong>е</strong> л ы й набор. З апись group<br />

b ee by b e e . C u rren tsta te го в о р и т, ч то<br />

пч<strong>е</strong>л н у ж н о р а зб и ть на гр у п п ы в со о тв <strong>е</strong> т­<br />

с т в и и со свойством C u r r e n t s t a t e . Н у и<br />

н а ко н <strong>е</strong> ц , м ы указыва<strong>е</strong>м им я н о в ы х гр уп п :<br />

in to beeGroup.<br />

select beeGroup;<br />

Т <strong>е</strong>п<strong>е</strong>рь н у ж н о п р и п о м о щ и кл ю ч <strong>е</strong> ­<br />

в о го слова s e l e c t указать, ка ко й<br />

р<strong>е</strong>зультат возвращ а<strong>е</strong>т запрос. В данном<br />

случа<strong>е</strong> указы ва<strong>е</strong>тся им я гр у п п ы :<br />

s e l e c t beeGroup;<br />

Т<strong>е</strong>п<strong>е</strong>рь, когда гр у п п ы го т о в ы , и м и м о ж н о<br />

управлять. Н а п р и м <strong>е</strong> р , п р и п о м о щ и пр<strong>е</strong>длож<br />

<strong>е</strong> н и я<br />

o r d e r b y у п о р я д о ч и ть и х п о знач<strong>е</strong>н<br />

и я м п <strong>е</strong> р <strong>е</strong> ч и сл <strong>е</strong> н и я C u r r e n t s t a t e (Idle,<br />

F l y i n g T o F l o w e r и т. п .). С тр о ч к а orderby<br />

beeGroup. Key с о р ти р у <strong>е</strong> т посл<strong>е</strong>доват<strong>е</strong>льности<br />

п о ключу, в кач<strong>е</strong>ств<strong>е</strong> к л ю ч а в д анном случа<strong>е</strong><br />

буд<strong>е</strong>т использоваться сво й ств о C u r r e n t s t a t e .<br />

Т йк как пч<strong>е</strong>лы группировались<br />

по сосплоянию, и м <strong>е</strong> н н о <strong>е</strong>го мы<br />

укаж<strong>е</strong>м в кач<strong>е</strong>ств<strong>е</strong> ключа.<br />

j<br />

currentstate = FlyingToFlower<br />

Обратит<strong>е</strong> внимани<strong>е</strong>, что<br />

запрос возвраща<strong>е</strong>т н<strong>е</strong><br />

отд<strong>е</strong>льных пч<strong>е</strong>л, а их грцппы.<br />

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

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

Saved successfully!

Ooh no, something went wrong!