LINQ(.NET Language Integrated Query) ÇÁ·ÎÁ§Æ®´Â µ¥ÀÌÅÍ ¼Ò½º »Ó¸¸ ¾Æ´Ï¶ó °³¹ßÀ» À§ÇÑ µ¥ÀÌÅÍ Á¢±ÙÀ» Ç¥ÁØÈÇÏ·Á´Â MSÀÇ ÀÌ´Ï¼ÅÆ¼ºêÀÌ´Ù. LINQ¸¦ °ËÅäÇÑ ÀϺΠ°³¹ßÀÚµéÀº µ¥ÀÌÅͺ£À̽º ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ßÀÌ Çõ½ÅÀûÀ¸·Î º¯ÈÇÒ °ÍÀ̶ó°í ÁÖÀåÇß´Ù.
³» »ý°¢¿¡´Â LINQ¸¦ ÁøÁöÇÏ°Ô ¼ö¿ëÇÏ·Á¸é ¸î °¡Áö À庮ÀÌ ÇØ°áµÅ¾ß ÇÑ´Ù°í º»´Ù. ±×·¯³ª LINQ´Â Èï¹Ì·Î¿î ÀåÁ¡ÀÌ ¸î °¡Áö ÀÖÀ¸¸ç, SQL °³¹ßÀÚµé°ú DBA¿¡°Ô ÀÖ¾î¼ ÀÌ »õ·Î¿î ±â¼ú°ú ÀÌ ±â¼úÀÌ ¾à¼ÓÇÏ´Â ¹Ì·¡¿¡ ´ëÇØ ¾Ë¾Æº¼ Çʿ伺ÀÌ ÀÖ´Ù.
LINQÀÇ ÀåÁ¡À¸·Î´Â ¿ì¼± °ü°èÇü µ¥ÀÌÅͺ£À̽º Å×ÀÌºí »Ó¸¸ ¾Æ´Ï¶ó ÅØ½ºÆ® ÆÄÀÏ, XML ÆÄÀÏ, ±×¸®°í µ¿ÀÏÇÑ ±¸¹®À» »ç¿ëÇÏ´Â µ¥ÀÌÅÍ ¼Ò½º¿¡ ÁúÀǸ¦ ÇÒ ¼ö ÀÖ´Ù´Â Á¡À» µé ¼ö ÀÖ´Ù. µÎ ¹øÂ° ÀåÁ¡À¸·Î´Â C#, VB.NET µî ÀÓÀÇÀÇ .NET ȣȯ ¾ð¾î·Î ÀÌ Ç¥ÁØÈµÈ ¹æ½ÄÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù´Â Á¡ÀÌ´Ù.
LINQÀÇ ÀÛµ¿¿ø¸®
´ÙÀ½ÀÇ ÄÚµå´Â C#·Î ÀÛ¼ºµÈ °£´ÜÇÑ LINQ ÄÚµå ºí·ÏÀ¸·Î ³ë½ºÀ©µå µ¥ÀÌÅͺ£À̽º¸¦ Ÿ°ÙÀ¸·Î ÇÑ´Ù. LINQÀÇ ÀÛµ¿À» º¸±â À§ÇØ Ç¥ÁØ ÁúÀÇ ¿¬»êÀÚ¸¦ »ç¿ëÇØ ¹è¿·Î µÈ ÄÜÅÙÃ÷¸¦ ó¸®ÇÏ´Â °£´ÜÇÑ C# 3.0 ÇÁ·Î±×·¥À» »ìÆìº¸ÀÚ.
using System;
using System.Query;
using System.Collections.Generic;
class app {
static void Main() {
string[] names = { "Alpha", "Brian", "Connie", "David",
"Frank", "George",
"Harry", "Inigo" };
IEnumerable expr = from s in names
where s.Length == 5
orderby s
select s.ToUpper();
foreach (string item in expr)
Console.WriteLine(item);
}
}
This program delivers this output:
ÀÌ ÇÁ·Î±×·¥Àº ´ÙÀ½°ú °°Àº Ãâ·ÂÀ» ³½´Ù:
ALPHA
BRIAN
DAVID
FRANK
HARRY
INIGO
À§ ¿¹Á¦´Â LINQÀÇ ÄÚµù ½ºÅ¸ÀÏÀ» º¸¿©ÁÖ¸ç ÇÁ·ÐÆ® ¿£µå·Î Äڵ尡 À̵¿ÇÏ´Â °ÍÀ» º¸¿©ÁØ´Ù. ³» »ý°¢¿¡´Â Äڵ尡 ¹é ¿£µå·Î °¡´Â °ÍÀÌ ¸Â´Ù. ±×·¯³ª Äڵ尡 ±ú²ýÇÏ°í ºñ±³Àû Åõ¸íÇÏ´Ù´Â »ç½ÇÀº ÀÎÁ¤ÇÑ´Ù.
ÇÁ·ÐÆ® ¿£µå¿Í ¹é ¿£µåÀÇ ÀǹÌ
ÀüÅëÀûÀΠŬ¶óÀ̾ðÆ®-¼¹ö ±¸¼º¿¡¼ ÇÁ·ÐÆ® ¿£µå¿Í ¹é ¿£µå¿¡ ´ëÇØ °£´ÜÈ÷ ³íÇϰڴÙ. ¹é ¿£µå´Â µ¥ÀÌÅͺ£À̽º ÀÚü·Î ¼¹ö¿¡ »óÁÖÇÑ´Ù. ÇÁ·ÐÆ® ¿£µå´Â ÀÏ·ÃÀÇ Å¬¶óÀÌ¾ðÆ® ¾ÖÇø®ÄÉÀ̼ÇÀ¸·Î ¿øÇÏ´Â µ¥ÀÌÅͺ£À̽º¿Í Åë½ÅÇÑ´Ù.
¿©±â¿¡´Â ºñÁÖ¾ó º£ÀÌÁ÷, C++, PHP ¿Í °°ÀÌ ¼±ÅÃµÈ ÇÁ·Î±×·¡¹Ö ¾ð¾î·Î ÀÛ¼ºµÈ ¾ÖÇø®ÄÉÀ̼ÇÀÌ Æ÷ÇԵȴÙ. ÇÁ·ÐÆ® ¿£µå¿¡´Â ¶ÇÇÑ MS ¾×¼¼½º, ¿¢¼¿, ¿öµå¿Í °°Àº ¾ÖÇø®ÄÉÀ̼ǵµ Æ÷ÇÔ½ÃÄÑ¾ß µÈ´Ù.
100¸í ÀÌÇÏÀÇ Á÷¿øÀ» µÐ ¼Ò±Ô¸ð ±â¾÷¿¡¼ ÀÌ·¯ÇÑ ±¸ºÐÀº Çй®ÀûÀ¸·Î µé¸± ¼ö ÀÖÁö¸¸ ³ªÀÇ ÁÖÀåÀº "¼º°øÀ» À§ÇØ ¼³°èÇ϶ó. ±×·¸Áö ¸øÇÏ´Ù¸é ÀÌ¹Ì ½ÇÆÐ¸¦ Æ÷ÇÔÇϰí ÀÖ´Â °Í"ÀÌ´Ù.
µû¶ó¼ ³ª´Â °¡´ÉÇÑ ¸¹Àº ºÎºÐÀ» ÇÁ·ÐÆ® ¿£µå°¡ ¾Æ´Ñ ¹é ¿£µå¿¡ ³Ö°í ½Í¾îÇÑ´Ù. ·¹ÄÚµå ÁýÇÕÀ» ¸¸µé°í Çϳª ȤÀº µÎ°³ÀÇ ¸Å°³º¯¼ö·Î ¼±ÅÃÀ» Çϸç Çϳª ȤÀº µÎ°³ÀÇ ¿¿¡ ÀÇÇØ Á¤·ÄÀ» ÇÏ´Â ÇÁ·Î½ÃÀú³ª ÇÔ¼ö¸¦ ³»°¡ ÀÛ¼ºÇÑ´Ù°í °¡Á¤ÇÏÀÚ.
¸¸¾à ÀÌ·± ·ÎÁ÷À» ÇÁ·ÐÆ® ¿£µå¿¡ ³Ö´Â´Ù¸é ´ÙÀ½ ÁÖ³ª ´ÙÀ½ ´Þ¿¡ µµÀԵǴ »õ·Î¿î ÇÁ·ÐÆ® ¿£µå¿¡ À̸¦ »õ·ÎÀÌ Æ÷ÇÔ½ÃÄÑ¾ß ÇÒ °ÍÀÌ´Ù. ¿ì¸®´Â ·ÎÁ÷ÀÌ ¾ð¾î¿¡ µ¶¸³ÀûÀ̶ó »ý°¢ÇÏ°í ½ÍÁö¸¸ ½ÇÁ¦·Î´Â ±×·¸Áö ¾Ê´Ù.
°³¹ßÀº ÀüÅëÀûÀΠŬ¶óÀ̾ðÆ®-¼¹ö¿¡¼ ´Ù¾çÇÑ 3´Ü°è ¾ÆÅ°ÅØÃ³(DLL __hell, SOAP µî)·Î ¹ßÀüµÆ´Ù. ÀÌ·± ¾ÆÅ°ÅØÃ³¿¡¼ ÇÁ·ÐÆ® ¿£µå´Â »ó´çÇÑ ·ÎÁ÷À» Æ÷ÇÔÇϰí ÀÖ´Â °¡¿îµ¥ Ƽ¾î¿Í Åë½ÅÇÏ¸ç °ü½ÉÀÖ´Â ¸ðµç ÇÁ·ÐÆ® ¿£µå¿¡ ÀÇÇØ Á¢±ÙµÉ ¼ö ÀÖ´Ù.
°¡¿îµ¥ Ƽ¾î´Â ÀÌÁ¦ ¿øÇÏ´Â µ¥ÀÌÅͺ£À̽º¿Í Åë½ÅÇÑ´Ù. ÀÌ·± Åë½ÅÀ» ¼ºÃëÇÏ´Â ¹æ½ÄÀº ÇÁ·ÐÆ® ¿£µå ¾ð¾î¿Í °¡¿îµ¥ Ƽ¾îÀÇ ±¸Çö¿¡ ÀÇÁ¸ÀûÀÌÁö¸¸ °¡¿îµ¥ Ƽ¾î°¡ µ¥ÀÌÅͺ£À̽º ¼¹ö¿Í Åë½ÅÇϸç ÇÁ·ÐÆ® ¿£µå´Â °¡¿îµ¥ Ƽ¾î¿Í Åë½ÅÇÒ ¶§ ÀÚ±â ÀڽŸ¸ ½Å°æ¾²¸é µÈ´Ù. µû¶ó¼ ¹é ¿£µå¶ó´Â ¿ë¾î´Â ÀÌ·± ¾ÆÅ°ÅØÃ³µµ Æ÷ÇÔÇϵµ·Ï ³»°¡ È®Àå½ÃÄ×´Ù.
³»°¡ ¸»ÇÏ·Á´Â ¹Ù´Â ÇÁ·ÐÆ® ¿£µå´Â ÃÖ¼ÒȵǾî¾ß ÇÑ´Ù´Â Á¡ÀÌ´Ù. °¡¿îµ¥ Ƽ¾î¸¦ »ç¿ëÇÑ´Ù¸é °¡´ÉÇÑ ¸¹Àº ·ÎÁ÷À» À̸®·Î ¿Å±â°í µðÀÚÀÎÀ» Àç°íÇÑ ´ÙÀ½ °¡´ÉÇÑ ¸ðµç ·ÎÁ÷À» ¹é ¿£µå·Î ¿Å±ä´Ù.
³ªÀÇ ÁÖ°üÀÌ ³ªÀÇ ³«°ü·Ð¿¡ ¾îµÎ¿òÀ» µå¸®¿ì´Â °Í °°´Ù
³ª´Â ´ÙÀ½ÀÇ ÁÖÀåÀÌ ¼º½º·¯¿î ¿øÄ¢À̾úÀ¸¸é ÁÁ°Ú´Ù: ¹é ¿£µåÀÇ ±â´É¿¡ °ü°è¾øÀÌ ¹é ¿£µå´Â µ¿ÀÛÇØ¾ß ÇÑ´Ù. ÀÌ·± ÁÖ°üÀ» °¡Áø ³ª´Â ¿Ö µ¥ÀÌÅͺ£À̽º ·ÎÁ÷ÀÌ ÇÁ·ÐÆ® ¿£µå·Î °¡¼´Â ¾ÈµÈ´Ù°í º¸´ÂÁö ÀÌÁ¦ ÀÌÇØÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
¿Ö ÀÌ ¿øÄ¢¿¡ ´ëÇØ ¿Ï°íÇϳİí? ³» °æÇè¿¡ ÀÇÇÏ¸é ´Ù¾çÇÑ ÇÁ·ÐÆ® ¿£µå ¾ÖÇø®ÄÉÀÌ¼Ç (À¥ »çÀÌÆ®, ºñÁê¾ó ½ºÆ©µð¿À ¾ÖÇø®ÄÉÀ̼Ç, µ¨ÆÄÀÌ ¾ÖÇø®ÄÉÀ̼Ç))ÀÌ ÇϳªÀÇ µ¥ÀÌŸº£À̽º·Î ÇâÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù. Äڵ带 ¹é ¿£µå¿¡¼ ÇÁ·ÐÆ® ¿£µå·Î ¿Å±æ ¼ö ÀÖ´Ù¸é ÇÁ·ÐÆ® ¿£µå »çÀÌ¿¡¼µµ À̵¿ÀÌ °¡´ÉÇÏ´Ù. ¸¸¾à ºñÁÖ¾ó ½ºÆ©µð¿À ´å³ÝÀ» °è¼Ó »ç¿ëÇϱâ·Î Çß´Ù¸é À̰͵µ ±¦ÂúÁö¸¸ ´ç½Å ȤÀº Á÷¿øÀÌ ´Ù¸¥ »ý°¢À» °¡Áö°í ÀÖ´Ù¸é ¾î¶»°Ô ÇÒ °ÍÀΰ¡? ¾Æ´Ï¸é ÀÌ·± ·ÎÁ÷À» ´Ù¸¥ µ¥ÀÌÅͺ£À̽º¿¡ Æ÷ÆÃÇϰíÀÚ ÇÑ´Ù¸é?
³» °üÁ¡ÀÌ ¸ðµÎÀÇ ÁöÁö¸¦ ¹Þ´Â °ÍÀº ¾Æ´Ï´Ù. ³ª´Â ¾î¶² °æ¿ì ÀÓÀÇÀÇ µ¿ÀûÀ¸·Î ±¸ÃàµÈ ÁúÀǸ¦ ÇÊ¿ä·Î ÇÏ´Â ¾ÖÇø®ÄÉÀ̼ǰú »óȲÀÌ ÀÖ´Ù°í ÁÖÀåÇÏ´Â °³¹ßÀÚµéÀ» ¾Ë°í ÀÖ´Ù. ³ª´Â ÀÌ·¯ÇÑ »óȲÀÌ ÃæºÐÈ÷ ºÐ¼®µÇÁö ¾Ê¾Ò´Ù°í ÁÖÀåÇÏÁö¸¸ ³»°¡ Ʋ·Áµµ ÁÁ´Ù. µû¶ó¼ ´Ù¸¥ °üÁ¡À» °ËÅäÇϰí À̰ÍÀÌ ¿Ç´Ù°í °¡Á¤ÇÏÀÚ. N°³ÀÇ »óȲÇÏ¿¡¼ ¿Ã¹Ù¸¥ ´Ü ÇÑ °¡Áö ±æÀº ÇÁ·ÐÆ® ¿£µå°¡ À¯È¿ÇÑ SQL ¸í·É¹®À» ¸¸µé°í, Äڵ带 SQL ÀÎÁ§¼Ç¿¡¼ º¸È£Çϸç, ¸í·É¾î¸¦ µ¥ÀÌÅͺ£À̽º ¿£ÁøÀ¸·Î ³Ñ±ä´Ù.
¶ÇÇÑ ¾î¶² ÀÔÀåÀÌ Áø½ÇÀ̳ĸ¦ ¶°³ª¼ SQL ¸í·ÉÀ» ¹é ¿£µå°¡ ¾Æ´Ñ ÇÁ·ÐÆ® ¿£µå¿¡¼ °³¹ßÇϱ⸦ ¿øÇÏ´Â ¼ö ¸¹Àº °³¹ßÀÚµéÀÌ ÀÖ´Ù°í °¡Á¤ÇÏÀÚ. ÀÌ·¯ÇÑ »ç¶÷µé¿¡°Ô LINQ °¡ °¡Àå ÀαⰡ ÀÖÀ» °ÍÀÌ´Ù. ³ªÀÇ ¼º½º·¯¿î ¿øÄ¢¿¡ ¿©·¯ºÐÀÌ µ¿ÀÇÇÏ´Â °Í¸¸Å ¿©·¯ºÐÀº ÀÌ·± ÇÁ·ÐÆ® ¿£µå·ÎÀÇ ÀüȯÀÌ ¸¶¶¥Ä¡ ¾ÊÀ» °ÍÀÌ´Ù.
ÆÇ´ÜÀº À¯º¸Àû
ÀÌ ½Å±â¼úÀÌ µ¥ÀÌÅͺ£À̽º ±â¼ú¿¡ ÀÖ¾î¼ ´ÙÀ½ ¹ø ´ë¹ÚÀÌ µÉ Áö ÆÇ´ÜÇϱ⿣ ³Ê¹« À̸£´Ù. ¿ì¼± ´Ù¾çÇÑ µ¥ÀÌÅͺ£À̽º¿Í ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ß »óȲ¿¡¼ Æò°¡µÅ¾ß ÇÑ´Ù. ³» »ý°¢¿¡ LINQ ÀÇ ¸ÖƼ-µ¥ÀÌÅÍ ¼Ò½º Ãß»óÈ´Â ¸Å¿ì ¸ÚÁöÁö¸¸ ³»°¡ ¸»ÇÑ °Íó·³ Äڵ带 ¹é ¿£µå¿¡¼ ÇÁ·ÐÆ® ¿£µå·Î ¿Å±â´Â °ÍÀº º»ÁúÀûÀ¸·Î ½Ç¼ö¶ó°í º»´Ù.
½Ã°£¸¸ÀÌ ´äÀ» ¾Ë °ÍÀÌ´Ù.
±×·¯³ª LINQÀÇ ÀåÁ¡ÀÌ Áõ¸íµÉ ±× ½ÃÁ¡ÀÌ µÉ ¶§±îÁö(¹é ¿£µå¿¡ ·ÎÁ÷À» Æ÷ÇÔÇϰí ÇÁ·ÐÆ® ¿£µå´Â ÇÁ·Î½ÃÀú ÀúÀå°ú ¿øÇÏ´Â ¸Å°³º¯¼ö °ø±ÞÀ» À§ÇÑ ½¬¿î È£ÃâÀ» ÀÛ¼ºÇÏ´Â °Í°ú ºñ±³ÇÒ ¶§) ³ª´Â "ÀüÅëÀûÀÎ" ¹æ½ÄÀ» °í¼öÇÒ °ÍÀÌ´Ù. ¹é ¿£µåÀÇ ±â´É¿¡ »ó°ü¾øÀÌ ¹é ¿£µå´Â µ¿ÀÛÇØ¾ß ÇÑ´Ù.@