|
°Á Àü Å¿ÀÀÇ Àâ´ã>
À̹ø °Á´ Å¿À »çÀÌÆ®ÀÇ ¸â¹öÀÌÀÚ, Microsoft MVPÀÎ ±è °æ±Õ´ÔÀÌ Á¦°øÇÏ´Â LINQ¿¡ °üÇÑ À̾߱âÀÔ´Ï´Ù.
¸¹Àº ºÐµéÀÌ °ü½ÉÀ» °¡Áö°í ÀÖ´Â LINQ¿¡ ´ëÇØ ±âº»ÀûÀÎ °³³äÀ» ÀÌÇØÇÒ ¼ö ÀÖ´Â °Á°¡ µÉ ¿¹Á¤ÀÌ´Ï ¸¹Àº °ü½ÉÀ» ºÎʵ右´Ï´Ù.
LINQ¶õ ¹«¾ùÀΰ¡?
LINQ´Â Language Integrate QueryÀÇ ¾àÀڷνá ÅëÇÕ ÁúÀÇ ¾ð¾î ¶ó°í ¸»ÇÒ ¼ö ÀÖ½À´Ï´Ù..
±âÁ¸ÀÇ Query´Â DatabaseÀÇ µ¥ÀÌÅ͸¦ ´Ù·ç±â À§ÇØ »ç¿ëÇÏ´Â ¾ð¾îÂëÀ¸·Î ¿©°Ü Á³½À´Ï´Ù.
ÇÏÁö¸¸ LINQ´Â Ä÷º¼Ç ÇüÅ·ΠµÇ¾îÀÖ´Â ¸ðµç µ¥ÀÌÅÍ¿¡ ´ëÇØ ÁúÀǸ¦ ÇÒ ¼ö ÀÖ´Â ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®ÀÇ »õ·Î¿î ±â¼úÀÔ´Ï´Ù.
¿¹¸¦ µéÀÚ¸é MS-SQLÀÇ µ¥ÀÌÅ͸¦ °¡Á®¿À´Âµ¥ LINQ¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀº ¹°·ÐÀÌ°í ¸Þ¸ð¸®»óÀÇ Ä÷º¼Ç ¶Ç´Â XML¿¡ ´ëÇØ¼µµ LINQ¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
Áö±ÝºÎÅÍ ÀÌ °·ÂÇÑ ÅëÇÕÁúÀǾð¾îÀÎ LINQ¿¡ ´ëÇØ ¾Ë¾Æº¸µµ·Ï ÇϰڽÀ´Ï´Ù.
1. Extension Method(È®Àå ¸Þ¼µå)
Extension Method(ÀÌÇÏ È®Àå¸Þ¼µå)´Â ±âÁ¸ÀÇ Å¸ÀÔ¿¡ ¸Å¼µå¸¦ Ãß°¡Çϰųª ÀçÄÄÆÄÀÏ ÇÒ ÇÊ¿ä ¾øÀÌ ÀÌ¹Ì Á¸ÀçÇÏ´Â CLRŸÀÔ¿¡ »õ·Î¿î ¸Þ¼µå¸¦ Ãß°¡ÇÒ ¼ö ÀÖ°Ô ¼³°èµÈ ¸Þ¼µå
ÀÔ´Ï´Ù.
//staticŬ·¡½º¸¦ »ý¼ºÇØ¾ß ÇÑ´Ù.
public static class KClass
{
//static¸Þ¼µå·Î »ý¼ºÇØ¾ß ÇÑ´Ù.
public static int isOdd(this int n)
{
//Ȧ¼öÀÏ °æ¿ì 1À» ¹ÝȯÇÑ´Ù.
if (n % 2 == 1)
return n;
return 0;
}
}
int num = 5;
//intÇüÀÇ º¯¼ö µÚ¿¡ isOdd()¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
//numÀÌ 5À̹ǷΠ5¸¦ ¹ÝȯÇÑ´Ù.
int oddValue = num.isOdd();
LINQ ¿Í È®Àå¸Þ¼´Â ¹«½¼ °ü°èÀΰ¡? È®Àå¸Þ¼µå´Â LINQ¿¡¼ Äõ¸®¸¦ À§ÇÑ ¸Þ¼µå(Select, Where...)´Â È®Àå ¸Þ¼µå·Î µÇ¾î Àֱ⠶§¹®ÀÔ´Ï´Ù.
À§ÀÇ Ä¸ÃÄȸéÀ» º¸¸é ºÐÈ«»ö À°¸éü´Â ÀÏ¹Ý ¸Þ¼µå¸¦ ³ªÅ¸³À´Ï´Ù. ±× Áß¿¡¼ ÆÄ¶õ»öÀÇ ¾Æ·¡¹æÇâ È»ìÇ¥°¡ ÀÖ´Â °ÍÀÌ È®Àå¸Þ¼µå¸¦ ³ªÅ¸³»´Â ¾ÆÀÌÄÜÀε¥ À§¿¡¼´Â All, Any, AverageµîÀÌ ÀÖ½À´Ï´Ù.
LINQ¿¡¼´Â »ó´çÈ÷ ¸¹Àº ¼öÀÇ È®Àå¸Þ¼µå¸¦ »ç¿ëÇÕ´Ï´Ù. °ÅÀÇ ¸ðµç ¸Þ¼µå°¡ È®Àå¸Þ¼µå¶ó°í ºÁµµ ¹«¹æÇÒ Á¤µµÁÒ. È®Àå¸Þ¼µå´Â LINQ»Ó¸¸ÀÌ ¾Æ´Ï¶ó ÀÏ¹Ý Äڵ忡¼µµ ÀÀ¿ëÇÒ ¼ö Àֱ⿡ ÀÌÀå¿¡¼ ´Ù·ç¾î º¸¾Ò½À´Ï´Ù.
2. Anonymous Type(À͸í ŸÀÔ)
Anonymous TypeÀº ŸÀÔÀÇ ¼±¾ðÀ» ¸íÈ®ÇÏ°Ô Á¤ÀÇÇÏÁö ¾Ê°í ÄÚµå ³»ÀÇ CLRŸÀÔÀ» °£´ÜÇÏ°Ô Á¤ÀÇÇÏ´Â °ÍÀÌ °¡´ÉÇÑ C#3.0ÀÇ Æí¸®ÇÑ ±â´ÉÀÔ´Ï´Ù.
public class Tech
{
public string Upper{ get; set;}
public string Lower{ get; set;}
}
string[] strs = {"ASp.NeT","AjAx","SilvErLigHt"};
IEnumerable<Tech> techs = from s in strs
select new Tech
{
Upper = s.ToUpper(),
Lower = s.ToLower()
};
foreach (Tech t in techs)
{
Response.Write(t.Lower + "," + t.Upper + "");
}
À§ÀÇ ¿¹Á¦´Â Query Syntax¸¦ »ç¿ëÇÕ´Ï´Ù.
¾ÆÁ÷ Query SyntaxÀÇ »ç¿ë¹ý¿¡ ´ëÇÏ¿© ¹è¿ìÁö´Â ¾Ê¾ÒÁö¸¸ Anonymous Type¿¡ ´ëÇá¿© ¾Ë¾Æº¸±â À§ÇØ °£´ÜÇÑ Query Syntax¸¦ »ç¿ëÇÏ¿´½À´Ï´Ù.
¿ì¼± Upper¿Í LowerÇÁ·ÎÆÛƼ¸¦ °®´Â Tech¶ó´Â Ŭ·¡½º¸¦ ¸¸µé¾ú½À´Ï´Ù.(ÀÌ Å¬·¡½º´Â ÇÁ·ÎÆÛƼ »ý¼º¹æ¹ýÀÌ ±âÁ¸°ú ¾à°£ ´Ù¸¨´Ï´Ù. À̸¦ Automatic Propertity¶ó°í ÇÕ´Ï´Ù.)
strs¶ó´Â ¹®ÀÚ¿ ¹è¿¿¡´Â ´ë¼Ò¹®ÀÚ°¡ ±¸ºÐµÇÁö ¾ÊÀº ¼¼ °³ÀÇ ¹®ÀÚ¿ÀÌ ÀÖ½À´Ï´Ù. fromÀý¿¡¼ strs¸¦ »ç¿ëÇÏ°Ú´Ù°í ¸í½ÃÇß°í selectÀý¿¡¼´Â new TechŰ¿öµå¸¦ ÀÌ¿ëÇØ ¾Õ¿¡¼ ¸¸µé¾ú´ø TechŸÀÔÀ¸·Î °³Ã¼¸¦ »ý¼ºÇÕ´Ï´Ù. ±×¸®°í °¢°¢ Upper¿Í Lower¿¡ °ªÀ» ÇÒ´çÇÕ´Ï´Ù.
À̸¦ ¹Þ´Â techsº¯¼ö´Â Tech¸¦ ŸÀԸŰ³º¯¼ö·Î ÇÏ´Â IEnumeableÇüÀ¸·Î ¼±¾ðÇÕ´Ï´Ù.
Query Syntax¸¦ ÀÌ¿ëÇÏ¿© ¹Ì¸® Á¤ÀÇµÈ Å¸ÀÔÀ¸·Î µ¥ÀÌÅ͸¦ Äõ¸® Çß½À´Ï´Ù. »ó´çÈ÷ ¸í½Ã ÀûÀÌÁö¸¸ TechŸÀÔÀÌ ¹ü¿ëÀûÀ¸·Î ¾²ÀÌÁö ¾Ê°í ÇöÀç ÄÚµå ºÎºÐ¿¡¼ ÇѽÃÀûÀ¸·Î »ç¿ëµÈ´Ù¸é Äڵ尡 ¸¹ÀÌ º¹ÀâÇØ Áú ¼ö ÀÖ½À´Ï´Ù.
À̸¦ Á»´õ °£´ÜÇÏ°Ô »ç¿ëÇϱâ À§ÇØ ³ª¿Â °ÍÀÌ Anonymous TypeÀÔ´Ï´Ù.
string[] strs = {"ASp.NeT","AjAx","SilvErLigHt"};
var texts = from s in strs
select new
{
upper = s.ToUpper(),
lower = s.ToLower()
};
foreach(var t in texts)
{
Response.Write(t.lower + "," + t.upper + "");
}
À§ÀÇ ÄÚµå´Â ¾ÕÀÇ Äڵ忡 ºñÇØ »ó´çÈ÷ °£´ÜÇØ Á³½À´Ï´Ù. ÀÏ´Ü TechŬ·¡½º Á¤Àǰ¡ ¾ø¾îÁ³½À´Ï´Ù. selectÀýÀ» º¸¸é newŰ¿öµå ´ÙÀ½ TechŬ·¡½º »ý¼ºÀÚ°¡ ¾ø¾îÁø °ÍÀ» º¼ ¼ö ÀÖ½À´Ï´Ù.
Ŭ·¡½ºÀÇ »ý¼ºÀÚ ¾øÀÌ ¹Ù·Î newŰ¿öµå¸¦ ÅëÇØ °³Ã¼¸¦ »ý¼ºÇϰí ÀÓÀÇ·Î upper¿Í lower¸¦ ¸¸µé¾î °ªÀ» ÇÒ´çÇÕ´Ï´Ù.
À̰ÍÀÌ ¹Ù·Î Anonymous TypeÀÔ´Ï´Ù. À͸íÀ¸·Î ŸÀÔÀ» »ý¼ºÇÑ °ÍÀÔ´Ï´Ù. ±×·¡¼ ÀÌ Äõ¸® °á°ú´Â ŸÀÔÀÌ ¸íÈ®ÇÏÁö ¾Ê±â ¶§¹®¿¡ IEnumeable<>ÇüÀ¸·Î ¹ÞÁö ¾Ê°í var Ű¿öµå¸¦ »ç¿ëÇÏ°Ô µË´Ï´Ù.
´ÙÀ½Àº var Ű¿öµå¿¡ ´ëÇØ ¾Ë¾Æº¸µµ·Ï ÇϰڽÀ´Ï´Ù.
3. var Ű¿öµå
c#3.0¿¡¼ °¡Àå Ãæ°ÝÀûÀÎ ºÎºÐÀ̶ó°í »ý°¢ÇÏ´Â varŰ¿öµå¿¡ ´ëÇØ ¾Ë¾Æº¸°Ú½À´Ï´Ù. var Ű¿öµå´Â ±âÁ¸ÀÇ ÀÎÅÍÇÁ¸®Å;ð¾î(javascript..)¿¡¼ »ç¿ëµÇ´Â Çü½ÄÀÌ Á¤ÇØÁöÁö ¾ÊÀº ¾î¶°ÇÑ ÀÓÀÇÀÇ º¯¼ö¸¦ ³ªÅ¸³À´Ï´Ù.
C#¿¡¼µµ µåµð¾î varŰ¿öµå°¡ µµÀÔ µÇ¾ú´Âµ¥ ±âÁ¸ÀÇ ÀÎÅÍÇÁ¸®Å;ð¾î¿¡¼ÀÇ var¿Í´Â °³³äÀÌ ¾à°£ ´Ù¸¨´Ï´Ù.
±âÁ¸ÀÇ varŸÀÔÀº ÇÁ·Î±×·¥À» ½ÇÇàÇÏ´Â µ¿¾È Áï, ·±Å¸ÀÓ ½Ã ŸÀÔÀÌ °áÁ¤µÇ´Â ¹Ý¸é C#ÀÇ varŸÀÔÀº ÄÄÆÄÀÏ ½Ã¿¡ ŸÀÔÀÌ °áÁ¤µË´Ï´Ù.
ÀÌÁ¦ varŰ¿öµå·Î ¸ðµç º¯¼ö¸¦ ´ëüÇÒ ¼ö ÀÖ½À´Ï´Ù. ŸÀÔ¿¡ ´õ ÀÌ»ó ½Å°æ ¾²Áö ¾Ê°í °³¹ßÀÌ °¡´ÉÇÕ´Ï´Ù. ÇÏÁö¸¸ ASP.NET¿¡¼´Â »ç¿ëÀÚ°¡ ÆäÀÌÁö¸¦ º¼ ¶§±îÁö °É¸®´Â ½Ã°£¿¡ ÄÄÆÄÀÏ Å¸ÀÓÀÌ Æ÷ÇÔ µË´Ï´Ù. varŰ¿öµå¸¦ ³²¹ßÇϸé ÄÄÆÄÀÏ Å¸ÀÓÀÌ ´Ã¾î³ª°ÔµÇ¾î »ç¿ëÀÚ°¡ ȸéÀ» º¼ ¶§±îÁö °É¸®´Â ½Ã°£ÀÌ ±æ¾îÁö¹Ç·Î
Â¥Áõ³¯ ¼öµµ Àֱ⠶§¹®¿¡ varŸÀÔÀº ÀûÀýÈ÷ ÇÊ¿äÇÑ LINQ°ü·Ã ºÎºÐ¿¡¼ »ç¿ëÇϰųª ¹Ýµå½Ã ÇÊ¿äÇÑ ºÎºÐ¿¡¼ »ç¿ëÇÏ´Â °ÍÀÌ Çö¸íÇÑ ¼±Åà ÀÏ °ÍÀÔ´Ï´Ù.
var ŸÀÔ¿¡ ´ëÇØ ¾Ë¾Æ µÎ¼Å¾ß ÇÒ Áß¿äÇÑ Ã¼Å© Æ÷ÀÎÆ®°¡ ÀÖ½À´Ï´Ù.
var ŸÀÔÀº ¸ðµç µ¥ÀÌÅÍ Å¸ÀÔÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ ÃʱⰪÀ» ÇÒ´çÇÏÁö ¾ÊÀ» °æ¿ì ÄÄÆÄÀÏ Å¸ÀÓ¿¡ ¾î¶°ÇÑ Å¸ÀÔÀÎÁö ¾Ë ¼ö ¾ø±â ¶§¹®¿¡ ¼±¾ð°ú µ¿½Ã¿¡ °ªÀ» ÇÒ´ç ÇØ¾ß ÇÕ´Ï´Ù.
ÀÌ ºÎºÐÀÌ ±âÁ¸ ÀÎÅÍÇÁ¸®ÅÍ ¾ð¾î¿Í ´Ù¸¥ °¡Àå Áß¿äÇÑ Â÷ÀÌÁ¡ÀÔ´Ï´Ù. ºñÁê¾ó½ºÆ©µð¿À·Î ÀÛ¾÷ÇÒ ¶§ var ŸÀÔ º¯¼ö¿¡ ¹ØÁÙÀÌ ³ªÅ¸³ª¸é Ãʱ⠰ªÀ» ÇÒ´ç Çß´ÂÁö ¿ì¼± È®ÀÎÇØ º¸¼¼¿ä.
Anonymous TypeÀÇ µÎ ¹øÂ° ¿¹Á¦¸¦ ´Ù½Ã »ìÆìº¸¸é Äõ¸® ÇÑ °á°ú°ªÀ» varŸÀÔÀ¸·Î ¹ÞÀº °ÍÀ» È®ÀÎ ÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÀÌ´Â selectÀý¿¡¼ µ¥ÀÌÅ͸¦ °¡Á®¿Ã ¶§ newŰ¿öµå ¸¸À» »ç¿ëÇß°í ¾î¶°ÇÑ Å¸ÀÔÀÎÁö ¾Ë ¼ö ¾ø´Â Anonymous TypeÀ̱⠶§¹®¿¡ varŰ¿öµå¸¦ »ç¿ëÇÏ¿© °ªÀ» ÇÒ´ç ¹Þ°Ô µË´Ï´Ù.
ÄÄÆÄÀÏ Å¸ÀÓ¿¡ var ŸÀÔÀº selectÇÑ Å¸ÀÔÀ» È®ÀÎÇÑ ´ÙÀ½ ƯÁ¤ ŸÀÔÀ¸·Î Ä¡È¯ÇØ ÁÖ°Ô µÇ´Â °ÍÀÔ´Ï´Ù.
±× ´ÙÀ½ ¾Æ·¡ ÄÚµåÀÇ foreach¹®¿¡¼µµ ŸÀÔÀ» Á¤È®È÷ ¾Ë ¼ö ¾ø±â ¶§¹®¿¡ varŰ¿öµå¸¦ »ç¿ëÇÒ °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.
4. Lambda Expression(¶÷´Ù Ç¥Çö½Ä)
¿ë¾î»çÀüÀÇ ¼³¸í¿¡ ÀÇÇϸé Lambda ExpressionÀº '¾î¶² ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇÑ °úÁ¤À» ¼öÇÐÀû ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© Ç¥ÇöÇÑ ¼ö½Ä'À̶ó°í ¼³¸íµÇ¾î ÀÖ½À´Ï´Ù.
C#3.0ÀÇ Lambda ExpressionÀÇ ±â´É°ú ÀϸƻóÅëÇÏ´Â ºÎºÐÀÔ´Ï´Ù.
Lambda ExpressionÀº C#2.0¿¡¼ µµÀԵǾú´ø Anonymous Delegate(ÀÍ¸í ´ë¸®ÀÚ, ¹«¸í ¸Þ¼µå)¸¦ Á» ´õ ½Ç¿ëÀûÀ¸·Î ¸¸µç °ÍÀ¸·Î½á Lambda ExpressionÀº ÄÄÆÄÀÏ °úÁ¤¿¡¼ Delegate(´ë¸®ÀÚ)·Î ġȯµË´Ï´Ù. °£´ÜÈ÷ ¼³¸íÇϸé Lambda ExpressionÀº Ä÷º¼Ç¿¡ ÁúÀǸ¦ Çϱâ À§ÇØ LINQ¿¡¼ »ç¿ëµÇ´Â Ç¥Çö½ÄÀ̶ó°í
¾Ë¾ÆµÎ½Ã¸é µÉ °Í °°½À´Ï´Ù.
(¸Å°³º¯¼öµé)=>(Ç¥Çö½Ä)
Lambda ExpressionÀº À§¿Í °°ÀÌ ³ªÅ¸³¾ ¼ö ÀÖ½À´Ï´Ù.
°£´ÜÇÑ Lambda ExpressionÀÇ ¿¹¸¦ »ìÆìº¸µµ·Ï ÇϰڽÀ´Ï´Ù.
int[] numbers = {1,2,3,4,5,6,7,8,9};
1. IEnumerable<int> odds = numbers.Where(n=>n%2==1);
2. IEnumerable<int> odds = numbers.Where((int n)=>n%2==1);
3. IEnumerable<int> odds = numbers.Where(delegate(int n){return n%2==1;});
Where¸Þ¼µå´Â C#3.0¿¡¼ Ãß°¡µÈ IEnumerable<T>ÀÇ °ª¿¡ ¼øÂ÷ÀûÀ¸·Î Á¢±ÙÇÏ¿© ±× °ªÀ» ÇÊÅ͸µ Çϱâ À§ÇÑ È®Àå¸Þ¼µå ÀÔ´Ï´Ù. È®Àå¸Þ¼µå¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ¼³¸íÀº µÚ¿¡¼ Çϵµ·Ï ÇϰڽÀ´Ï´Ù.
WhereÀÇ ÆÄ¶ó¹ÌÅ͸¦ º¸¸é (¸Å°³º¯¼öµé)=>(Ç¥Çö½Ä)°ú °°Àº ÇüÅ·ΠµÇ¾î ÀÖ½À´Ï´Ù. numbersÀÇ °ªµéÀ» Â÷·Ê·Î À̵¿Çϸç Ȧ¼öÀÎ °æ¿ì °ªÀ» ¹ÝȯÇÏ°Ô µË´Ï´Ù.
1¹øÀÇ Ç¥Çö½ÄÀ» Á»´õ ¸íÈ®ÇÏ°Ô ³ªÅ¸³»¸é 2¹ø°ú °°ÀÌ nÀ» int nÀ¸·Î ³ªÅ¸³¾ ¼ö µµ ÀÖ½À´Ï´Ù.
3¹øÀÇ °æ¿ì¿¡´Â 1¹ø ¶Ç´Â 2¹øÀÇ Ç¥Çö½ÄÀÌ ÄÄÆÄÀÏ µÉ ¶§ ¸¸µé¾îÁö´Â ÄÚµå·Î Anonymous DelegateÇüÅ·Π»ý¼ºµÇ°Ô µË´Ï´Ù. óÀ½ºÎÅÍ 3¹ø°ú °°Àº ¹æ½ÄÀ¸·Î »ç¿ëÇØµµ »ó°ü ¾øÁö¸¸ °£°áÇÔÀ» À§ÇØ 1¹ø°ú °°Àº Lambda ExpressionÀ» »ç¿ë ÇÏ´Â °ÍÀ» ±ÇÀå ÇÕ´Ï´Ù.
5. Query Syntax
Query Syntax¶õ Ç¥ÁØ LINQ query ¿¬»êÀÚ¸¦ »ç¿ëÇÏ¿© Äõ¸®¸¦ Ç¥ÇöÇϱâ À§ÇÑ ¼±¾ðÀû Ç¥±â ¹æ¹ýÀÔ´Ï´Ù.
Query Syntax´Â ±âÁ¸ÀÇ Äõ¸®Ã³·³ ¹®ÀÚ¿À» ÀÌ¿ëÇÏ´Â ¹æ½ÄÀÌ ¾Æ´Ï¶ó ÄÚµå»ó¿¡ ±âÁ¸ Äڵ带 ÀÔ·ÂÇϵíÀÌ ±ò²ûÇÏ°Ô Äõ¸®¸¦ ÀÛ¼ºÇÒ ¼ö
ÀÖ½À´Ï´Ù. ¶ÇÇÑ Á¤È®ÇÏ°Ô ÀÐ°í ¾²´Â °ÍÀÌ °¡´ÉÇÏ¸ç ½±°Ô ±× ³»¿ëÀ» È®ÀÎ ÇÒ ¼ö ÀÖ½À´Ï´Ù.
¶Ç ÇϳªÀÇ Æí¸®ÇÑ Á¡Àº Visual Studio¸¦ »ç¿ë ÇÒ °æ¿ì ¿Ïº®ÇÑ ÀÎÅÚ¸®¼¾½º¸¦ Á¦°øÇϸç ÄÄÆÄÀÏ Å¸ÀÓÀÇ Ã¼Å© ¶ÇÇÑ Áö¿øÇÕ´Ï´Ù.
Qyery Syntax Ç¥ÇöÀº Àǹ̻óÀ¸·Î LINQ È®Àå¸Þ¼µå¿Í Lambda ExpressionÀ» »ç¿ëÇÏ´Â °Í°ú µ¿ÀÏÇÕ´Ï´Ù.
ÇÏÁö¸¸ »ç¿ë¹ý ÀÚü°¡ ±âÁ¸ÀÇ Query¿Í µ¿ÀÏÇÏ¿© °³¹ßÀÚ´Â ÀÌ¿¡ Á»´õ ½±°Ô ´Ù°¡°¥ ¼ö ÀÖÀ» °Í °°½À´Ï´Ù.
int[] numbers = {1,2,3,4,5,6,7,8,9};
int[] selNums = from n in numbers
where n>5;
select n;
À§ÀÇ Query Syntax´Â numbers¹è¿¿¡¼ 5º¸´Ù Å« ¼ýÀÚµéÀ» °¡Á®¿À´Â Ç¥Çö½ÄÀÔ´Ï´Ù.
±âÁ¸ÀÇ Query¿Í ´Ù¸¥ Á¡ÀÌ ÀÖ´Ù¸é °¢ ÀýÀÇ À§Ä¡°¡ ±âÁ¸°ú´Â ´Ù¸£°Ô formÀýÀÌ °¡Àå »óÀ§¿¡ ¿À°í ±× ´ÙÀ½ whereÀý ¸¶Áö¸·À¸·Î selectÀýÀÌ ¿À´Â °ÍÀ» È®ÀÎ ÇÒ ¼ö ÀÖ½À´Ï´Ù.
óÀ½ Query Syntax¸¦ »ç¿ëÇÒ °æ¿ì ÀûÀÀÇϱ⠾î·Á¿ï ¼ö ÀÖÁö¸¸ ÀÚ¼¼È÷ º¸¸é ±âÁ¸ÀÇ Queryº¸´Ù ´õ ¸íÈ®ÇÏ°Ô »ç¿ë ÇÒ ¼ö ÀÖ´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖ½À´Ï´Ù.
°¡Àå ¸ÕÀú ¾îµð¼ µ¥ÀÌÅ͸¦ °¡Á®¿Ã °ÍÀÎÁö¸¦ Á¤Çϰí(from), °¡Á®¿Â µ¥ÀÌÅÍ Áß¿¡¼ ¾î¶² µ¥ÀÌÅ͸¦ °É·¯³¾ °ÍÀ̸ç(where), °É·¯Áø µ¥ÀÌÅ͸¦ ¾î¶² ÇüÅ·Π°¡Á®¿Ã °ÍÀΰ¡(select)¸¦ Á¤ÀÇÇÏ°Ô µË´Ï´Ù.
Query Syntax¿¡¼ fromÀýÀº foreach¿Í »ó´çÈ÷ À¯»çÇÏ´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖ½À´Ï´Ù.
nÀ̶ó°í °¡Á¤ÇÑ º¯¼ö¿Í ÀÌ º¯¼öÀÇ Á¦ÇÑ ¹üÀ§¸¦ ¼³Á¤ÇÏ´Â ³ª¿µÉ ¼ö ÀÖ´Â °³Ã¼ numbers¸¦ ÁöÁ¤ÇÑ °ÍÀÌ
foreach¿Í »ó´çÈ÷ À¯»çÇϸç À̾îÁö´Â Àý(where, select)¿¡¼ °¡Á¤ÇÑ º¯¼ö nÀ» »ç¿ëÇÏ´Â°Í ¶ÇÇÑ »ó´çÈ÷ À¯»çÇÕ´Ï´Ù.
À̾îÁö´Â whereÀý°ú selectÀý µîÀº ´ÙÀ½ °Á¿¡¼ ÁßÁ¡ ÀûÀ¸·Î ¼³¸íÇϵµ·Ï ÇϰڽÀ´Ï´Ù.
À̹ø ¾ÆÆ¼Å¬¿¡¼´Â LINQ¸¦ »ç¿ëÇϱâ À§ÇØ ±× ±â¹ÝÀÌ µÇ´Â Lambda Expression, Extension Method, Anonymous Type, var Ű¿öµå,
Query Syntax ¿¡ ´ëÇØ ¾Ë¾Æ º¸¾Ò½À´Ï´Ù.
´ÙÀ½ °Á¿¡¼´Â ¸Þ¸ð¸® »óÀÇ Ä÷º¼Ç °³Ã¼¿¡ LINQ¸¦ Àû¿ëÇÏ´Â ¹æ¹ý°ú Lamba ExpressionÀ» º¸´Ù À¯¿¬ÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ¸¹Àº ¿¹Á¦¸¦ ÅëÇØ LINQ¿¡ ÇѰÉÀ½ ´õ ±í¼÷ÀÌ µé¾î°¡ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.
´ÙÀ½ °Á¸¦ ±â´ëÇØ ÁÖ¼¼¿ä..^^ °¨»çÇÕ´Ï´Ù.
°Á ¸ñ·ÏÀ¸·Î..
|