ÓÑÇéÌáʾ£ºÈç¹û±¾ÍøÒ³´ò¿ªÌ«Âý»òÏÔʾ²»ÍêÕû£¬Çë³¢ÊÔÊó±êÓÒ¼ü¡°Ë¢Ð¡±±¾ÍøÒ³£¡
¸»Ê¿¿µÐ¡ËµÍø ·µ»Ø±¾ÊéĿ¼ ¼ÓÈëÊéÇ© ÎÒµÄÊé¼Ü ÎÒµÄÊéÇ© TXTÈ«±¾ÏÂÔØ ¡ºÊղص½ÎÒµÄä¯ÀÀÆ÷¡»

VB2008´ÓÈëÃŵ½¾«Í¨(PDF¸ñʽӢÎÄ°æ)-µÚ76²¿·Ö

¿ì½Ý²Ù×÷: °´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·­Ò³ °´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ °´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿! Èç¹û±¾ÊéûÓÐÔĶÁÍ꣬ÏëÏ´μÌÐø½Ó×ÅÔĶÁ£¬¿ÉʹÓÃÉÏ·½ "Êղص½ÎÒµÄä¯ÀÀÆ÷" ¹¦ÄÜ ºÍ "¼ÓÈëÊéÇ©" ¹¦ÄÜ£¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡So¡¡how¡¡does¡¡this¡¡work£¿¡¡I¡¡write¡¡code¡¡to¡¡fulfill¡¡two¡¡criteria£º¡¡minimal¡¡to¡¡solve¡¡the¡¡task¡¡and¡¡general¡¡enough¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡to¡¡not¡¡restrict¡¡further¡¡usage¡£¡¡So¡¡I¡¡don¡¯t¡¡actually¡¡design¡¡for¡¡code¡¡reuse£»¡¡and¡¡I¡¡don¡¯t¡¡have¡¡code¡¡reuse¡¡on¡¡my¡¡mind¡£¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡What¡¡I¡¡have¡¡on¡¡my¡¡mind¡¡is¡¡to¡¡design¡¡code¡¡in¡¡such¡¡a¡¡way¡¡that¡¡it¡¡could¡¡potentially¡¡be¡¡reused¡£¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Let¡¯s¡¡look¡¡at¡¡that¡¡code¡¡that¡¡could¡¡have¡¡solved¡¡the¡¡frequency¡¡problem¡¡previously¡£¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Dim¡¡splitUpText£¨£©¡¡as¡¡String¡¡=¡¡lineOfText¡£Split£¨New¡¡Char£¨£©¡¡£û¡¡¡¨¡¡¡¨c¡¡£ý£©¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡frequency£¨Integer¡£Parse£¨splitUpText£¨0£©£©£©¡¡£«=¡¡1¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡frequency£¨Integer¡£Parse£¨splitUpText£¨1£©£©£©¡¡£«=¡¡1¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¡¡¡£¡¡¡£¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Is¡¡this¡¡code¡¡efficient£¿¡¡No£»¡¡even¡¡though¡¡the¡¡lines¡¡of¡¡code¡¡are¡¡minimal£»¡¡the¡¡code¡¡itself¡¡is¡¡not¡¡efficient¡£¡¡If¡¡I¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡wanted¡¡to¡¡use¡¡the¡¡same¡¡code¡¡to¡¡perform¡¡another¡¡frequency¡¡analysis£»¡¡which¡¡could¡¡happen£»¡¡I¡¡would¡¡need¡¡to¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡copy¡¡and¡¡paste¡¡yet¡¡again£»¡¡and¡¡thus¡¡the¡¡code¡¡is¡¡not¡¡efficient¡£¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Is¡¡this¡¡code¡¡general¡¡enough¡¡to¡¡be¡¡used¡¡in¡¡another¡¡context£¿¡¡Absolutely¡¡not£»¡¡because¡¡to¡¡reuse¡¡the¡¡code£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡you¡¡would¡¡need¡¡to¡¡copy¡¡and¡¡paste¡¡it£»¡¡and¡¡do¡¡some¡¡slight¡¡alterations¡£¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡This¡¡is¡¡an¡¡excellent¡¡example¡¡of¡¡code¡¡that¡¡can¡¡be¡¡written¡¡very¡¡quickly¡¡and¡¡is¡¡very¡¡effectively¡¡used¡¡by¡¡copying¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡and¡¡pasting¡¡it¡¡everywhere¡£¡¡You¡¡are¡¡productive¡¡and¡¡can¡¡solve¡¡a¡¡problem¡¡quickly£»¡¡but¡¡it¡¡cannot¡¡be¡¡easily¡¡extended¡¡or¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡maintained¡£¡¡Imagine¡¡finding¡¡a¡¡bug¡¡and¡¡having¡¡copied¡¡and¡¡pasted¡¡the¡¡code¡¡ten¡¡times¡£¡¡That¡¡would¡¡mean¡¡you¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡would¡¡need¡¡to¡¡find¡¡the¡¡ten¡¡different¡¡locations¡¡and¡¡see¡¡if¡¡the¡¡bug¡¡exists¡¡in¡¡those¡¡different¡¡locations¡£¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Using¡¡LINQ¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡To¡¡find¡¡the¡¡frequency¡¡of¡¡a¡¡specific¡¡number£»¡¡you¡¡don¡¯t¡¡need¡¡to¡¡use¡¡LINQ¡£¡¡In¡¡fact£»¡¡LINQ¡¡can¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡always¡¡be¡¡avoided¡¡by¡¡using¡¡Visual¡¡Basic¡¡code¡£¡¡So¡¡then¡¡why¡¡use¡¡LINQ£¿¡¡The¡¡reason¡¡is¡¡that¡¡LINQ¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡makes¡¡it¡¡easier¡¡for¡¡you¡¡to¡¡write¡¡plicated¡¡search¡¡queries¡¡that¡¡are¡¡agnostic¡¡of¡¡the¡¡source¡£¡¡An¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡example¡¡is¡¡two¡¡versions¡¡of¡¡the¡¡code¡¡used¡¡to¡¡solve¡¡the¡¡frequency¡¡problem£º¡¡one¡¡that¡¡is¡¡not¡¡reus

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡able¡¡and¡¡one¡¡that¡¡is¡¡reusable¡£¡¡The¡¡code¡¡that¡¡is¡¡not¡¡reusable¡¡is¡¡the¡¡query¡¡without¡¡LINQ£»¡¡and¡¡the¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡reusable¡¡code¡¡is¡¡the¡¡query¡¡with¡¡LINQ¡£¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡So¡¡let¡¯s¡¡look¡¡at¡¡the¡¡frequency¡¡code¡¡that¡¡is¡¡not¡¡reusable¡£¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡425¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡AP¡¡T¡¡E¡¡R¡¡¡¡¡¡1¡¡5¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡A¡¡R¡¡N¡¡I¡¡N¡¡G¡¡¡¡¡¡A¡¡B¡¡OU¡¡T¡¡¡¡¡¡L¡¡I¡¡N¡¡Q¡¡403¡¡



Function¡¡FrequencyOfANumberNotReusable£¨ByVal¡¡numberToSearch¡¡As¡¡Integer£©¡¡_¡¡

¡¡¡¡As¡¡Integer¡¡

¡¡¡¡¡¡¡¡Dim¡¡runningTotal¡¡As¡¡Integer¡¡=¡¡0¡¡

¡¡¡¡¡¡¡¡For¡¡Each¡¡aTicket¡¡as¡¡Ticket¡¡in¡¡_tickets¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡If¡¡aTicket¡£Numbers£¨0£©¡¡=¡¡numberToSearch¡¡OrElse¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡aTicket¡£Numbers£¨1£©¡¡=¡¡numberToSearch¡¡OrElse¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡aTicket¡£Numbers£¨2£©¡¡=¡¡numberToSearch¡¡OrElse¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡aTicket¡£Numbers£¨3£©¡¡=¡¡numberToSearch¡¡OrElse¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡aTicket¡£Numbers£¨4£©¡¡=¡¡numberToSearch¡¡OrElse¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡aTicket¡£Numbers£¨5£©¡¡=¡¡numberToSearch¡¡Then¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡runningTotal¡¡£«=¡¡1¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡If¡¡

¡¡¡¡¡¡¡¡Next¡¡

¡¡¡¡¡¡¡¡Return¡¡runningTotal¡¡

End¡¡Function¡¡



¡¡¡¡¡¡¡¡¡¡Notice¡¡the¡¡similarity¡¡of¡¡the¡¡code¡¡to¡¡the¡¡code¡¡presented¡¡in¡¡Chapter¡¡9¡£¡¡The¡¡problem¡¡with¡¡this¡¡¡¡

code¡¡is¡¡that¡¡you¡¡are¡¡iterating¡¡and¡¡solving¡¡a¡¡particular¡¡problem¡£¡¡The¡¡code¡¡cannot¡¡be¡¡easily¡¡adapted¡¡¡¡

to¡¡solving¡¡another¡¡problem¡£¡¡

¡¡¡¡¡¡¡¡¡¡The¡¡reusable¡¡code¡¡is¡¡in¡¡the¡¡form¡¡of¡¡a¡¡LINQ¡¡expression£º¡¡



¡¡¡¡¡¡¡¡Private¡¡Function¡¡FrequencyOfANumber£¨ByVal¡¡numberToSearch¡¡As¡¡Integer£©¡¡As¡¡Integer¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Dim¡¡query¡¡=¡¡From¡¡ticket¡¡In¡¡_tickets¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Where¡¡ticket¡£Numbers£¨0£©¡¡=¡¡numberToSearch¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Or¡¡ticket¡£Numbers£¨1£©¡¡=¡¡numberToSearch¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Or¡¡ticket¡£Numbers£¨2£©¡¡=¡¡numberToSearch¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Or¡¡ticket¡£Numbers£¨3£©¡¡=¡¡numberToSearch¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Or¡¡ticket¡£Numbers£¨4£©¡¡=¡¡numberToSearch¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Or¡¡ticket¡£Numbers£¨5£©¡¡=¡¡numberToSearch¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Select¡¡ticket¡£Numbers¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡query¡£Count£¨£©¡¡

¡¡¡¡¡¡¡¡End¡¡Function¡¡



¡¡¡¡¡¡¡¡¡¡The¡¡LINQ¡¡expression¡¡uses¡¡many¡¡constructs¡¡similar¡¡to¡¡a¡¡SQL¡¡SELECT¡¡statement¡£¡¡Here¡¡are¡¡¡¡

the¡¡basic¡¡rules¡¡of¡¡LINQ£º¡¡



¡¡¡¡¡¡¡¡¡¡o¡¡All¡¡LINQ¡¡queries¡¡must¡¡have¡¡a¡¡data¡¡source¡¡£¨From£©¡£¡¡



¡¡¡¡¡¡¡¡¡¡o¡¡All¡¡LINQ¡¡queries¡¡must¡¡have¡¡a¡¡filter¡¡£¨Where£©£»¡¡however£»¡¡if¡¡the¡¡filter¡¡does¡¡not¡¡exist£»¡¡an¡¡auto

¡¡¡¡¡¡¡¡¡¡¡¡¡¡matic¡¡include¡­everything¡¡filter¡¡is¡¡implied¡£¡¡



¡¡¡¡¡¡¡¡¡¡o¡¡All¡¡LINQ¡¡queries¡¡must¡¡have¡¡a¡¡resulting¡¡dataset¡¡creator¡¡£¨Select£©¡£¡¡



¡¡¡¡¡¡¡¡¡¡To¡¡execute¡¡a¡¡LINQ¡¡expression£»¡¡you¡¡need¡¡a¡¡data¡¡source¡£¡¡The¡¡data¡¡source¡¡could¡¡be¡¡an¡¡object¡¡¡¡

list£»¡¡an¡¡XML¡¡document£»¡¡or¡¡even¡¡a¡¡relational¡¡database¡¡table¡£¡¡In¡¡the¡¡example£»¡¡the¡¡data¡¡source¡¡is¡¡¡¡

an¡¡object¡¡list¡¡and¡¡is¡¡defined¡¡using¡¡the¡¡From¡¡statement£º¡¡



From¡¡ticket¡¡In¡¡_tickets¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡426¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

404¡¡¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡AP¡¡T¡¡E¡¡R¡¡¡¡¡¡1¡¡5¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡A¡¡R¡¡N¡¡I¡¡N¡¡G¡¡¡¡¡¡A¡¡B¡¡OU¡¡T¡¡¡¡¡¡L¡¡I¡¡N¡¡Q¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Looking¡¡at¡¡the¡¡From¡¡statement£»¡¡you¡¡could¡¡get¡¡the¡¡idea¡¡that¡¡it¡¡is¡¡a¡¡¡¡For¡¡Each¡¡statement¡¡without¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡the¡¡types¡£¡¡Indeed£»¡¡the¡¡iteration¡¡happens¡¡only¡¡when¡¡you¡¡actually¡¡try¡¡to¡¡use¡¡the¡¡result¡¡of¡¡the¡¡LINQ¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡query¡£¡¡The¡¡From¡¡statement¡¡is¡¡saying¡¡to¡¡iterate¡¡the¡¡data¡¡source¡¡and¡¡assign¡¡each¡¡element¡¡£¨a¡¡Ticket£©¡¡to¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡the¡¡variable¡¡ticket¡£¡¡Note£»¡¡however£»¡¡that¡¡there¡¡is¡¡no¡¡explicit¡¡type¡¡information£»¡¡which¡¡is¡¡one¡¡of¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡the¡¡strengths¡¡of¡¡LINQ¡ªyou¡¡have¡¡the¡¡ability¡¡to¡¡easily¡¡slice¡¡and¡¡dice¡¡data¡¡to¡¡suit¡¡your¡¡needs¡£¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡As¡¡you¡¡retrieve¡¡each¡¡item£»¡¡you¡¡want¡¡to¡¡verify¡¡whether¡¡the¡¡item¡¡matches¡¡your¡¡needs¡£¡¡If¡¡you¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡look¡¡at¡¡the¡¡code¡¡that¡¡isn¡¯t¡¡reusable£»¡¡you¡¯ll¡¡see¡¡that¡¡it¡¡checks¡¡this¡¡with¡¡an¡¡If¡¡statement¡£¡¡In¡¡LINQ£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡you¡¡use¡¡the¡¡Where¡¡statement£»¡¡which¡¡is¡¡similar¡¡to¡¡its¡¡SQL¡¡equivalent¡£¡¡With¡¡the¡¡Where¡¡statement£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡you¡¡test¡¡to¡¡see¡¡if¡¡the¡¡item¡¡matches¡¡your¡¡criteria¡£¡¡In¡¡our¡¡case£»¡¡we¡¡check¡¡each¡¡number¡¡in¡¡the¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ticket¡¡instance¡¡to¡¡see¡¡if¡¡it¡¡matches¡¡the¡¡number¡¡we¡¯re¡¡currently¡¡seeking¡£¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡If¡¡the¡¡Where¡¡returns¡¡True£»¡¡we¡¡have¡¡a¡¡match¡¡and¡¡we¡¡will¡¡want¡¡to¡¡do¡¡something¡£¡¡In¡¡the¡¡code¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡that¡¡isn¡¯t¡¡reusable£»¡¡that¡¡means¡¡incrementing¡¡the¡¡runningTotal¡¡integer¡£¡¡In¡¡LINQ£»¡¡the¡¡aim¡¡is¡¡to¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡filter¡¡the¡¡data¡¡source¡¡£¨_tickets¡¡in¡¡our¡¡case£©£»¡¡and¡¡thus¡¡the¡¡¡¡Select¡¡statement¡¡is¡¡used¡¡to¡¡create¡¡a¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡new¡¡result¡¡set¡¡of¡¡drawn¡¡numbers¡£¡¡This¡¡result¡¡set¡¡contains¡¡all¡¡of¡¡the¡¡draws¡¡with¡¡the¡¡number¡¡we¡¯re¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡looking¡¡for¡¡£¨numberToSearch£©£»¡¡and¡¡if¡¡the¡¡draws¡¡are¡¡counted£»¡¡we¡¡can¡¡get¡¡the¡¡frequency¡¡of¡¡that¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡number£»¡¡which¡¡we¡¡then¡¡return¡£¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Let¡¯s¡¡look¡¡at¡¡the¡¡LINQ¡¡that¡¡could¡¡be¡¡used¡¡to¡¡find¡¡the¡¡frequency¡¡of¡¡two¡¡numbers¡¡being¡¡drawn¡£¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Function¡¡FrequencyOfTwoNumbers£¨ByVal¡¡number1ToSearch¡¡As¡¡Integer£»¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ByVal¡¡number2ToSearch¡¡As¡¡Integer£©¡¡As¡¡Integer¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Dim¡¡query¡¡=¡¡From¡¡ticket2¡¡In¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¨From¡¡ticket¡¡In¡¡_tickets¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Where¡¡ticket¡£Numbers£¨0£©¡¡=¡¡number1ToSearch¡¡¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Or¡¡ticket¡£Numbers£¨1£©¡¡=¡¡number1ToSearch¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Or¡¡ticket¡£Numbers£¨2£©¡¡=¡¡number1ToSearch¡¡¡¡¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Or¡¡ticket¡£Numbers£¨3£©¡¡=¡¡number1ToSearch¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Or¡¡ticket¡£Numbers£¨4£©¡¡=¡¡number1ToSearch¡¡¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Or¡¡ticket¡£Numbers£¨5£©¡¡=¡¡number1ToSearch¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Select¡¡ticket£©¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Where¡¡ticket2¡£Numbers£¨0£©¡¡=¡¡number2ToSearch¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Or¡¡ticket2¡£Numbers£¨1£©¡¡=¡¡number2ToSearch¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Or¡¡ticket2¡£Numbers£¨2£©¡¡=¡¡number2ToSearch¡¡¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Or¡¡ticket2¡£Numbers£¨3£©¡¡=¡¡number2ToSearch¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Or¡¡ticket2¡£Numbers£¨4£©¡¡=¡¡number2ToSearch¡¡¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Or¡¡ticket2¡£Numbers£¨5£©¡¡=¡¡number2ToSearch¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Select¡¡ticket2¡£Numbers¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡query¡£Count£¨£©¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Function¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡The¡¡LINQ¡¡statement¡¡is¡¡a¡¡concatenation¡¡of¡¡two¡¡LINQ¡¡queries£»¡¡where¡¡one¡¡LINQ¡¡query¡¡is¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡bolded¡£¡¡When¡¡the¡¡query¡¡is¡¡executed£»¡¡the¡¡embedded¡¡query¡¡is¡¡executed¡¡and¡¡generates¡¡a¡¡result¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡set¡£¡¡The¡¡result¡¡set¡¡is¡¡a¡¡data¡¡source¡¡on¡¡which¡¡the¡¡outer¡¡and¡¡second¡¡query¡¡operates£»¡¡which¡¡then¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡generates¡¡another¡¡result¡¡set¡£¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡You¡¡do¡¡not¡¡need¡¡to¡¡embed¡¡LINQ¡¡queries¡¡as¡¡in¡¡the¡¡preceding¡¡code¡£¡¡You¡¡could¡¡write¡¡functions¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡and¡¡embed¡¡the¡¡result¡¡of¡¡a¡¡LINQ¡¡query¡¡as¡¡the¡¡data¡¡source¡¡of¡¡another¡¡LINQ¡¡query¡£¡¡The¡¡power¡¡of¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡LINQ¡¡is¡¡that¡¡you¡¡can£»¡¡in¡¡theory£»¡¡arbitrarily¡¡embed¡¡many¡¡queries¡¡within¡¡other¡¡queries£»¡¡since¡¡you¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡are¡¡creating¡¡a¡¡filtering¡¡mechanism¡¡where¡¡one¡¡result¡¡set¡¡is¡¡the¡¡data¡¡source¡¡of¡¡another¡¡query¡£¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡427¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡AP¡¡T¡¡E¡¡R¡¡¡¡¡¡1¡¡5¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡A¡¡R¡¡N¡¡I¡¡N¡¡G¡¡¡¡¡¡A¡¡B¡¡OU¡¡T¡¡¡¡¡¡L¡¡I¡¡N¡¡Q¡¡405¡¡



¡öNote¡¡¡¡LINQ¡¯s¡¡strength¡¡is¡¡in¡¡its¡¡ability¡¡to¡¡slice¡¡and¡¡dice¡¡data¡¡to¡¡find¡¡the¡¡information¡¡that¡¡you¡¡want¡¡£¨which¡¡is¡¡¡¡

easy¡¡because¡¡it¡¡is¡¡data¡¡source¨Cagnostic£©¡£¡¡LINQ¡¡requires¡¡more¡¡resources¡¡than¡¡similar¡¡Visual¡¡Basic¡¡code¡¡in¡¡¡¡

longhand¡¡format¡£¡¡But¡¡the¡¡benefit¡¡you¡¡get¡¡with¡¡LINQ¡¡is¡¡reusable¡¡code¡¡that¡¡you¡¡can¡¡maintain¡£¡¡



¡¡¡¡¡¡¡¡¡¡In¡¡the¡¡preceding¡¡section£»¡¡we¡¡used¡¡LINQ¡¡to¡¡solve¡¡the¡¡frequency¡¡problem¡¡in¡¡a¡¡manner¡¡that¡¡¡¡

promoted¡¡reusability¡£¡¡For¡¡example£»¡¡if¡¡you¡¡wanted¡¡to¡¡find¡¡out¡¡more¡¡statistics¡¡of¡¡the¡¡lottery¡¡draws£»¡¡all¡¡¡¡

you¡¡would¡¡need¡¡to¡¡do¡¡is¡¡write¡¡more¡¡LINQ¡¡statements¡¡that¡¡sliced¡¡and¡¡diced¡¡the¡¡existing¡¡list¡¡¡¡

of¡¡lottery¡¡draws¡£¡¡It¡¡would¡¡require¡¡adding¡¡only¡¡the¡¡method¡¡calls¡¡to¡¡the¡¡IExtendedProcessor¡£¡¡

Destroy£¨£©¡¡method¡£¡¡However£»¡¡let¡¯s¡¡consider¡¡the¡¡problem¡¡solved¡¡and¡¡think¡¡about¡¡what¡¡else¡¡can¡¡¡¡

be¡¡done¡¡with¡¡LINQ¡£¡¡¡¡



Learning¡¡More¡¡LINQ¡¡Tricks¡¡



LINQ¡¡is¡¡not¡¡the¡¡only¡¡way¡¡to¡¡filter¡¡data¡£¡¡Associated¡¡with¡¡LINQ¡¡are¡¡a¡¡number¡¡of¡¡extension¡¡methods¡¡¡¡

that¡¡can¡¡be¡¡applied¡¡to¡¡lists¡£¡¡For¡¡example£»¡¡to¡¡filter¡¡for¡¡the¡¡frequency¡¡of¡¡a¡¡particular¡¡number£»¡¡the¡¡¡¡

following¡¡code¡¡could¡¡also¡¡have¡¡been¡¡used¡£¡¡



¡¡¡¡¡¡¡¡Function¡¡FrequencyOfANumber£¨ByVal¡¡numberToSearch¡¡As¡¡Integer£©¡¡As¡¡Integer¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Dim¡¡query¡¡=¡¡_tickets¡£Where£¨¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Function£¨ticket£»¡¡index£©¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ticket¡£Numbers£¨0£©¡¡=¡¡numberToSearch¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Or¡¡ticket¡£Numbers£¨1£©¡¡=¡¡numberToSearch¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Or¡¡ticket¡£Numbers£¨2£©¡¡=¡¡numberToSearch¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Or¡¡ticket¡£Numbers£¨3£©¡¡=¡¡numberToSearch¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Or¡¡ticket¡£Numbers£¨4£©¡¡=¡¡numberToSearch¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Or¡¡ticket¡£Numbers£¨5£©¡¡=¡¡numberToSearch£©¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡query¡£Count£¨£©¡¡

¡¡¡¡¡¡¡¡End¡¡Function¡¡



¡¡¡¡¡¡¡¡¡¡The¡¡ideas¡¡of¡¡LINQ¡¡that¡¡include¡¡From£»¡¡Where£»¡¡and¡¡Select¡¡are¡¡not¡¡lost£»¡¡they¡¡just¡¡have¡¡not¡¡been¡¡¡¡

used¡£¡¡The¡¡From¡¡part¡¡is¡¡the¡¡_tickets¡¡variable¡¡itself¡£¡¡The¡¡Where¡¡part¡¡is¡¡the¡¡method¡¡Where£¨£©£»¡¡and¡¡the¡¡¡¡

Select¡¡part¡¡is¡¡a¡¡default¡¡selection¡¡of¡¡the¡¡currently¡¡selected¡¡node¡£¡¡¡¡

¡¡¡¡¡¡¡¡¡¡To¡¡specify¡¡an¡¡action¡¡with¡¡Where£¨£©£»¡¡you¡¡use¡¡a¡¡lambda¡¡expression£»¡¡which¡¡has¡¡two¡¡parame

ters£º¡¡the¡¡object¡¡and¡¡the¡¡index¡¡of¡¡the¡¡object¡£¡¡The¡¡lambda¡¡expression¡¡expects¡¡that¡¡you¡¡return¡¡a¡¡¡¡

Boolean¡¡value¡¡indicating¡¡whether¡¡the¡¡ticket¡¡item¡¡should¡¡be¡¡added¡¡to¡¡a¡¡returned¡¡list¡£¡¡

¡¡¡¡¡¡¡¡¡¡LINQ¡¡is¡¡a¡¡syntax¡¡that¡¡wraps¡¡SQL¡­like¡¡text¡£¡¡LINQ¡¡is¡¡much¡¡easier¡¡to¡¡understand¡¡and¡¡program¡¡¡¡

than¡¡using¡¡the¡¡method¡­call¡¡syntax¡¡of¡¡the¡¡previous¡¡example¡£¡¡Using¡¡the¡¡methods¡¡gives¡¡you¡¡more¡¡¡¡

flexibility£»¡¡but¡¡they¡¡also¡¡are¡¡more¡¡plicated¡¡to¡¡write¡£¡¡

¡¡¡¡¡¡¡¡¡¡For¡¡example£»¡¡if¡¡you¡¡wanted¡¡to¡¡find¡¡the¡¡frequency¡¡of¡¡two¡¡numbers¡¡in¡¡a¡¡list£»¡¡you¡¡could¡¡use¡¡¡¡

this¡¡code£º¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡428¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

406¡¡¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡AP¡¡T¡¡E¡¡R¡¡¡¡¡¡1¡¡5¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡A¡¡R¡¡N¡¡I¡¡N¡¡G¡¡¡¡¡¡A¡¡B¡¡OU¡¡T¡¡¡¡¡¡L¡¡I¡¡N¡¡Q¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Function¡¡FrequencyOfTwoNumbersList£¨ByVal¡¡number1ToSearch¡¡As¡¡Integer¡¡£»¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ByVal¡¡number2ToSearch¡¡As¡¡Integer£©¡¡As¡¡Integer¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Dim¡¡query¡¡=¡¡_tickets¡£Where£¨¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Function£¨ticket£»¡¡index£©¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ticket¡£Numbers£¨0£©¡¡=¡¡number1ToSearch¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Or¡¡ticket¡£Numbers£¨1£©¡¡=¡¡number1ToSearch¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Or¡¡ticket¡£Numbers£¨2£©¡¡=¡¡number1ToSearch¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Or¡¡ticket¡£Numbers£¨3£©¡¡=¡¡number1ToSearch¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Or¡¡ticket¡£Numbers£¨4£©¡¡=¡¡number1ToSearch¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Or¡¡ticket¡£Numbers£¨5£©¡¡=¡¡number1ToSearch£©¡£Where£¨¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Function£¨ticket£»¡¡index£©¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ticket¡£Numbers£¨0£©¡¡=¡¡number2ToSearch¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Or¡¡ticket¡£Numbers£¨1£©¡¡=¡¡number2ToSearch¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Or¡¡ticket¡£Numbers£¨2£©¡¡=¡¡number2ToSearch¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Or¡¡ticket¡£Numbers£¨3£©¡¡=¡¡number2ToSearch¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Or¡¡ticket¡£Numbers£¨4£©¡¡=¡¡number2ToSearch¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Or¡¡ticket¡£Numbers£¨5£©¡¡=¡¡number2ToSearch£©¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡query¡£Count£¨£©¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Function¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡In¡¡the¡¡code£»¡¡the¡¡bolded¡¡line¡¡demonstrates¡¡how¡¡the¡¡output¡¡of¡¡one¡¡method¡¡can¡¡serve¡¡as¡¡the¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡input¡¡for¡¡another¡¡method¡£¡¡This¡¡chaining¡¡of¡¡methods¡¡works¡¡because¡¡the¡¡list¡¡method¡¡returns¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡other¡¡lists¡£¡¡Thus£»¡¡you¡¡could¡¡add¡¡multiple¡¡criteria¡¡by¡¡concatenating¡¡multiple¡¡Where£¨£©¡¡method¡¡calls¡£¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡The¡¡methods¡¡are¡¡used¡¡to¡¡filter¡¡or¡¡manipulate¡¡the¡¡set¡¡where¡¡the¡¡details¡¡of¡¡the¡¡method¡¡are¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡provided¡¡by¡¡a¡¡lambda¡¡expression¡£¡¡Table¡¡15¡­1¡¡briefly¡¡describes¡¡some¡¡of¡¡the¡¡useful¡¡methods¡¡that¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡you¡¡can¡¡use¡¡to¡¡filter¡¡and¡¡manipulate¡¡a¡¡list¡£¡¡The¡¡best¡¡way¡¡to¡¡learn¡¡about¡¡all¡¡of¡¡the¡¡methods¡¡is¡¡to¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡use¡¡Visual¡¡Basic¡¡Express£»¡¡declare¡¡a¡¡list£»¡¡and¡¡use¡¡IntelliSense¡¡to¡¡discover¡¡the¡¡different¡¡methods¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡available¡£¡¡Also£»¡¡see¡¡http£º//msdn2¡£microsoft¡£/en¡­us/vbasic/bb688088¡£aspx¡¡for¡¡many¡¡exam

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ples¡¡that¡¡demonstrate¡¡the¡¡various¡¡list¡­manipulation¡¡methods¡£¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Table¡¡15¡­1¡£¡¡Some¡¡Methods¡¡for¡¡Filtering¡¡and¡¡Manipulating¡¡Lists¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Method¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Description¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Aggregate£¨£©¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Returns¡¡a¡¡fact¡¡about¡¡the¡¡list¡£¡¡A¡¡fact¡¡could¡¡be¡¡how¡¡many¡¡even¡¡numbers¡¡there¡¡are¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡or¡¡the¡¡frequency¡¡of¡¡a¡¡particular¡¡number¡£¡¡All¡¡of¡¡the¡¡elements¡¡in¡¡the¡¡list¡¡are¡¡iterated¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡and¡¡returned¡¡as¡¡a¡¡single¡¡fact£»¡¡not¡¡as¡¡a¡¡list¡£¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡All£¨£©¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Iterates¡¡all¡¡elements¡¡of¡¡the¡¡list¡¡and¡¡tests¡¡according¡¡to¡¡a¡¡lambda¡¡expression£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡where¡¡a¡¡True¡¡or¡¡False¡¡is¡¡returned¡£¡¡For¡¡example£»¡¡the¡¡test¡¡could¡¡be¡¡to¡¡find¡¡out¡¡if¡¡all¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡objects¡¡have¡¡a¡¡value¡¡greater¡¡than¡¡10¡£¡¡The¡¡test¡¡needs¡¡to¡¡return¡¡only¡¡a¡¡True¡¡or¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡False¡¡value¡¡for¡¡the¡¡individual¡¡object£»¡¡where¡¡the¡¡All£¨£©¡¡method¡¡will¡¡correlate¡¡the¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡results¡¡and¡¡return¡¡a¡¡True¡¡or¡¡¡¡Fal
·µ»ØĿ¼ ÉÏÒ»Ò³ ÏÂÒ»Ò³ »Øµ½¶¥²¿ ÔÞ£¨11£© ²È£¨11£©
¿ì½Ý²Ù×÷: °´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·­Ò³ °´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ °´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿!
ÎÂÜ°Ìáʾ£º ο´Ð¡ËµµÄͬʱ·¢±íÆÀÂÛ£¬Ëµ³ö×Ô¼ºµÄ¿´·¨ºÍÆäËüС»ï°éÃÇ·ÖÏíÒ²²»´íŶ£¡·¢±íÊéÆÀ»¹¿ÉÒÔ»ñµÃ»ý·ÖºÍ¾­Ñé½±Àø£¬ÈÏÕæдԭ´´ÊéÆÀ ±»²ÉÄÉΪ¾«ÆÀ¿ÉÒÔ»ñµÃ´óÁ¿½ð±Ò¡¢»ý·ÖºÍ¾­Ñé½±ÀøŶ£¡