°´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ£¬°´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ£¬°´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿£¡
¡ª¡ª¡ª¡ªÎ´ÔĶÁÍꣿ¼ÓÈëÊéÇ©ÒѱãÏ´μÌÐøÔĶÁ£¡
Max£¨£©¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Finds¡¡the¡¡maximum¡¡value¡¡of¡¡a¡¡list¡£¡¡
Min£¨£©¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Finds¡¡the¡¡minimum¡¡value¡¡of¡¡a¡¡list¡£¡¡
Reverse£¨£©¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Reverses¡¡the¡¡order¡¡of¡¡the¡¡list¡£¡¡
Select£¨£©¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Selects¡¡from¡¡the¡¡iteration¡¡being¡¡executed¡£¡¡
SelectMany£¨£©¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Selects¡¡many¡¡items¡¡from¡¡a¡¡list¡¡where¡¡the¡¡selected¡¡items¡¡form¡¡another¡¡list¡£¡¡
Sum£¨£©¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Calculates¡¡the¡¡sum¡¡of¡¡a¡¡list¡£¡¡
Union£¨£©¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Takes¡¡the¡¡list¡¡and¡¡the¡¡passed¡in¡¡list¡¡and¡¡calculates¡¡the¡¡union¡¡of¡¡the¡¡two¡¡lists¡£¡¡Uses¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡the¡¡equality¡¡test¡¡as¡¡defined¡¡in¡¡the¡¡Distinct£¨£©¡¡method¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡430¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
408¡¡¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡AP¡¡T¡¡E¡¡R¡¡¡¡¡¡1¡¡5¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡A¡¡R¡¡N¡¡I¡¡N¡¡G¡¡¡¡¡¡A¡¡B¡¡OU¡¡T¡¡¡¡¡¡L¡¡I¡¡N¡¡Q¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡öNote¡¡¡¡With¡¡Visual¡¡Basic¡¡2008£»¡¡lists¡¡and¡¡the¡¡manipulation¡¡of¡¡lists¡¡have¡¡dramatically¡¡changed¡¡for¡¡the¡¡better¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡The¡¡general¡¡structure¡¡is¡¡to¡¡define¡¡methods¡¡that¡¡allow¡¡a¡¡developer¡¡to¡¡specify¡¡a¡¡lambda¡¡expression¡¡that¡¡is¡¡then¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡chained¡¡together¡¡with¡¡other¡¡methods¡£¡¡Take¡¡some¡¡time¡¡to¡¡learn¡¡about¡¡all¡¡of¡¡the¡¡possibilities¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡As¡¡an¡¡example¡¡of¡¡the¡¡power¡¡of¡¡the¡¡various¡¡methods£»¡¡consider¡¡the¡¡following¡¡code£»¡¡which¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡pacts¡¡the¡¡frequency¡¡code¡¡into¡¡a¡¡couple¡¡of¡¡lines¡¡of¡¡source¡¡code¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Function¡¡FrequencyOfANumberFunc£¨ByVal¡¡numberToSearch¡¡As¡¡Integer£©¡¡As¡¡Integer¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡_tickets¡£SelectMany£¨¡¡_¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Function£¨ticket£©¡¡ticket¡£Numbers£©¡£Where£¨¡¡_¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Function£¨num£©¡¡num¡¡=¡¡numberToSearch£©¡£Count£¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Function¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Here£»¡¡each¡¡ticket¡¡is¡¡iterated¡¡by¡¡calling¡¡the¡¡SelectMany£¨£©¡¡method¡£¡¡This¡¡returns¡¡an¡¡array¡¡of¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡numbers£»¡¡which¡¡represents¡¡the¡¡drawn¡¡numbers¡£¡¡The¡¡purpose¡¡of¡¡SelectMany£¨£©¡¡is¡¡to¡¡bine¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡the¡¡individual¡¡arrays¡¡of¡¡numbers¡¡into¡¡a¡¡large¡¡array¡¡of¡¡numbers¡£¡¡The¡¡code¡¡then¡¡calls¡¡Where£¨£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡to¡¡filter¡¡out¡¡only¡¡those¡¡numbers¡¡that¡¡equal¡¡the¡¡number¡¡to¡¡search¡¡for£»¡¡and¡¡finally¡¡the¡¡Count£¨£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡method¡¡is¡¡called¡¡to¡¡return¡¡the¡¡number¡¡of¡¡found¡¡values¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡The¡¡following¡¡sections¡¡present¡¡examples¡¡of¡¡using¡¡the¡¡extension¡¡methods¡¡with¡¡LINQ¡£¡¡They¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡are¡¡in¡¡the¡¡¡¡LINQExamples¡¡project£»¡¡which¡¡is¡¡a¡¡console¡¡application¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡öNote¡¡¡¡In¡¡all¡¡of¡¡the¡¡examples£»¡¡I¡¡have¡¡taken¡¡shortcuts¡¡for¡¡simplicity¡£¡¡So¡¡you¡¡will¡¡see¡¡some¡¡coding¡¡practices¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡that¡¡are¡¡not¡¡remended£»¡¡such¡¡as¡¡creating¡¡public¡¡data¡¡members¡¡and¡¡not¡¡using¡¡properties¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Selecting¡¡and¡¡Altering¡¡Data¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡When¡¡running¡¡a¡¡LINQ¡¡query£»¡¡the¡¡data¡¡that¡¡you¡¡filter¡¡and¡¡manipulate¡¡does¡¡not¡¡need¡¡to¡¡stay¡¡in¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡its¡¡original¡¡form¡£¡¡Let¡¯s¡¡say¡¡that¡¡you¡¡have¡¡a¡¡list¡¡of¡¡customers£»¡¡and¡¡you¡¡have¡¡identified¡¡a¡¡set¡¡of¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡customers¡¡who¡¡deserve¡¡more¡¡loyalty¡¡points¡£¡¡You¡¡want¡¡to¡¡select¡¡those¡¡customers£»¡¡increment¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡their¡¡points£»¡¡and¡¡then¡¡return¡¡the¡¡list¡¡of¡¡altered¡¡customers¡£¡¡To¡¡do¡¡that£»¡¡you¡¡can¡¡mix¡¡LINQ¡¡with¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡the¡¡extension¡¡methods¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Consider¡¡the¡¡following¡¡simplified¡¡customer¡¡declaration¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Class¡¡Customer¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Public¡¡Identifier¡¡As¡¡String¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Public¡¡Points¡¡As¡¡Integer¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Public¡¡Overrides¡¡Function¡¡ToString£¨£©¡¡As¡¡String¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡¡¨Identifier¡¡£¨¡¨¡¡&¡¡Identifier¡¡&¡¡¡¨£©¡¡Points¡¡£¨¡¨¡¡&¡¡Points¡¡&¡¡¡¨£©¡¨¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Function¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Class¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡A¡¡list¡¡will¡¡be¡¡created¡¡with¡¡two¡¡customers£»¡¡where¡¡one¡¡customer¡¡has¡¡no¡¡points¡¡and¡¡the¡¡other¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡one¡¡does¡£¡¡Here¡¡is¡¡the¡¡source¡¡code¡¡to¡¡create¡¡that¡¡list£º¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡431¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡AP¡¡T¡¡E¡¡R¡¡¡¡¡¡1¡¡5¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡A¡¡R¡¡N¡¡I¡¡N¡¡G¡¡¡¡¡¡A¡¡B¡¡OU¡¡T¡¡¡¡¡¡L¡¡I¡¡N¡¡Q¡¡409¡¡
¡¡¡¡¡¡¡¡Private¡¡Function¡¡CreateList£¨£©¡¡As¡¡Customer£¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡New¡¡Customer£¨£©¡¡£û¡¡_¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡New¡¡Customer£¨£©¡¡With¡¡£û¡£Identifier¡¡=¡¡¡¨Person¡¡1¡¨£»¡¡¡£Points¡¡=¡¡0£ý£»¡¡_¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡New¡¡Customer£¨£©¡¡With¡¡£û¡£Identifier¡¡=¡¡¡¨Person¡¡2¡¨£»¡¡¡£Points¡¡=¡¡10£ý£ý¡¡
¡¡¡¡¡¡¡¡End¡¡Function¡¡¡¡
¡¡¡¡¡¡¡¡¡¡The¡¡customers¡¡that¡¡have¡¡enough¡¡points¡¡are¡¡selected¡¡and¡¡rewarded¡¡with¡¡extra¡¡points¡£¡¡To¡¡do¡¡¡¡
that£»¡¡use¡¡the¡¡following¡¡LINQ¡¡statement¡£¡¡
¡¡¡¡¡¡¡¡Function¡¡Increment£¨ByVal¡¡pCustomer¡¡As¡¡Customer£»¡¡ByVal¡¡index¡¡As¡¡Integer£©¡¡_¡¡
¡¡¡¡¡¡¡¡¡¡¡¡As¡¡Customer¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡pCustomer¡£Points¡¡£«=¡¡5¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡pCustomer¡¡
¡¡¡¡¡¡¡¡End¡¡Function¡¡
¡¡¡¡¡¡¡¡Sub¡¡CountCustomers£¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Dim¡¡points¡¡=¡¡£¨From¡¡customer¡¡In¡¡CreateList£¨£©¡¡_¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Where¡¡customer¡£Points¡¡¡·¡¡5¡¡_¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Select¡¡customer£©¡£Select£¨AddressOf¡¡Increment£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Console¡£WriteLine£¨¡¨Count¡¡is¡¡£¨¡¨¡¡&¡¡points¡£Count£¨£©¡¡&¡¡¡¨£©¡¨£©¡¡
¡¡¡¡¡¡¡¡End¡¡Sub¡¡
¡¡¡¡¡¡¡¡¡¡The¡¡LINQ¡¡query¡¡is¡¡bined¡¡with¡¡a¡¡modification¡¡operation¡£¡¡The¡¡LINQ¡¡statement¡¡that¡¡uses¡¡¡¡
From£»¡¡Where£»¡¡and¡¡Select¡¡is¡¡not¡¡new¡£¡¡New¡¡are¡¡the¡¡parentheses¡¡enclosing¡¡the¡¡LINQ¡¡statement¡£¡¡By¡¡¡¡
using¡¡a¡¡set¡¡of¡¡parentheses£»¡¡you¡¡are¡¡identifying¡¡the¡¡LINQ¡¡statement¡¡as¡¡an¡¡object¡¡that¡¡references¡¡¡¡
a¡¡result¡¡set¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡In¡¡the¡¡example£»¡¡the¡¡method¡¡called¡¡on¡¡the¡¡LINQ¡¡statement¡¡is¡¡Select£¨£©¡£¡¡Using¡¡the¡¡Select£¨£©¡¡¡¡
method£»¡¡each¡¡item¡¡in¡¡the¡¡result¡¡set¡¡is¡¡iterated¡¡and¡¡passed¡¡as¡¡a¡¡parameter¡¡£¨pCustomer£©¡¡to¡¡the¡¡¡¡
lambda¡¡expression¡¡£¨Increment£¨£©£©¡£¡¡Passed¡¡with¡¡the¡¡item¡¡is¡¡the¡¡index¡¡of¡¡the¡¡item¡¡in¡¡the¡¡list¡£¡¡The¡¡¡¡
role¡¡of¡¡the¡¡lambda¡¡expression¡¡is¡¡to¡¡do¡¡something¡¡with¡¡the¡¡item¡¡and¡¡return¡¡what¡¡should¡¡be¡¡used¡¡as¡¡¡¡
a¡¡basis¡¡for¡¡another¡¡list¡£¡¡In¡¡the¡¡example£»¡¡an¡¡instance¡¡of¡¡the¡¡type¡¡Customer¡¡is¡¡passed¡¡in¡¡to¡¡Increment£¨£©£»¡¡¡¡
and¡¡an¡¡instance¡¡of¡¡type¡¡Customer¡¡is¡¡passed¡¡out¡£¡¡But¡¡before¡¡the¡¡instance¡¡is¡¡returned£»¡¡it¡¡is¡¡manip
ulated¡¡to¡¡get¡¡an¡¡additional¡¡five¡¡bonus¡¡points¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡What¡¡might¡¡concern¡¡you¡¡is¡¡that¡¡there¡¡is¡¡no¡¡test¡¡to¡¡check¡¡if¡¡the¡¡customer¡¡actually¡¡warrants¡¡¡¡
earning¡¡five¡¡bonus¡¡points¡£¡¡That¡¡would¡¡be¡¡a¡¡concern¡¡if¡¡you¡¡were¡¡not¡¡using¡¡the¡¡LINQ¡¡expression¡£¡¡¡¡
The¡¡LINQ¡¡expression¡¡is¡¡responsible¡¡for¡¡filtering¡¡out¡¡only¡¡those¡¡customers¡¡who¡¡should¡¡get¡¡the¡¡¡¡
additional¡¡bonus¡¡points¡£¡¡Thus£»¡¡when¡¡the¡¡method¡¡Select£¨£©¡¡is¡¡called£»¡¡you¡¡are¡¡100£¥¡¡sure¡¡that¡¡¡¡
only¡¡the¡¡customers¡¡who¡¡should¡¡get¡¡bonus¡¡points¡¡actually¡¡get¡¡bonus¡¡points¡£¡¡Think¡¡of¡¡this¡¡as¡¡¡¡
building¡¡a¡¡pipeline¡¡of¡¡manipulations¡£¡¡
Selecting¡¡with¡¡Anonymous¡¡Types¡¡
The¡¡Select£¨£©¡¡method¡¡and¡¡statement¡¡are¡¡used¡¡to¡¡generate¡¡a¡¡result¡¡set¡¡after¡¡finding¡¡a¡¡particular¡¡¡¡
element¡£¡¡As¡¡demonstrated¡¡in¡¡the¡¡previous¡¡section£»¡¡a¡¡Select¡¡statement¡¡is¡¡used¡¡to¡¡generate¡¡a¡¡new¡¡¡¡
result¡¡set¡£¡¡For¡¡example£»¡¡what¡¡if¡¡you¡¡want¡¡to¡¡find¡¡all¡¡of¡¡the¡¡customers¡¡who¡¡fulfill¡¡a¡¡certain¡¡crite
rion£»¡¡but¡¡do¡¡not¡¡want¡¡to¡¡copy¡¡all¡¡of¡¡the¡¡associated¡¡data£¿¡¡You¡¡might¡¡want¡¡only¡¡the¡¡customer¡¡¡¡
identifier¡¡and¡¡accumulated¡¡points¡£¡¡To¡¡do¡¡that£»¡¡you¡¡could¡¡modify¡¡the¡¡Select£¨£©¡¡part¡¡of¡¡the¡¡LINQ¡¡¡¡
statement¡¡to¡¡return¡¡a¡¡new¡¡type¡¡that¡¡you¡¡declare¡¡dynamically¡£¡¡The¡¡following¡¡is¡¡the¡¡previous¡¡¡¡
example¡¡rewritten¡¡to¡¡use¡¡an¡¡anonymous¡¡type¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡432¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
410¡¡¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡AP¡¡T¡¡E¡¡R¡¡¡¡¡¡1¡¡5¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡A¡¡R¡¡N¡¡I¡¡N¡¡G¡¡¡¡¡¡A¡¡B¡¡OU¡¡T¡¡¡¡¡¡L¡¡I¡¡N¡¡Q¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Function¡¡Increment2£¨ByVal¡¡pCustomer¡¡As¡¡Customer£»¡¡ByVal¡¡index¡¡As¡¡Integer£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡pCustomer¡£Points¡¡£«=¡¡5¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡New¡¡With¡¡£û¡£identifier¡¡=¡¡pCustomer¡£Identifier£»¡¡_¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£points¡¡=¡¡pCustomer¡£Points£ý¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Function¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Sub¡¡CountCustomers2£¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Dim¡¡points¡¡=¡¡£¨From¡¡customer¡¡In¡¡CreateList£¨£©¡¡_¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Where¡¡customer¡£Points¡¡¡·¡¡5¡¡_¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Select¡¡customer£©¡£Select£¨AddressOf¡¡Increment2£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Console¡£WriteLine£¨¡¨Count¡¡is¡¡£¨¡¨¡¡&¡¡points¡£Count£¨£©¡¡&¡¡¡¨£©¡¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Sub¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡In¡¡the¡¡example£»¡¡the¡¡Return¡¡statement¡¡in¡¡the¡¡¡¡Increment2£¨£©¡¡method¡¡uses¡¡the¡¡keyword¡¡New¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡without¡¡a¡¡type¡¡identifier£»¡¡but¡¡with¡¡the¡¡syntax¡¡of¡¡an¡¡object¡¡initializer¡£¡¡This¡¡is¡¡defining¡¡an¡¡anony
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡mous¡¡type¡£¡¡An¡¡anonymous¡¡type¡¡is¡¡an¡¡object¡¡instance¡¡that¡¡has¡¡no¡¡explicitly¡¡named¡¡type¡£¡¡The¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡anonymous¡¡type¡¡has¡¡properties£»¡¡but¡¡it¡¡does¡¡not¡¡have¡¡methods¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Anonymous¡¡types¡¡are¡¡useful¡¡only¡¡in¡¡the¡¡context¡¡of¡¡the¡¡method¡¡in¡¡which¡¡they¡¡are¡¡declar