잊지 않겠습니다.

Pro LINQ (01)

Book 2009. 1. 7. 18:13
LINQ(Language-Integrated Query)는 .NET Programmer들에게 프로그램의 개발방향을 새로 만들어줬다고 해도 과언이 아니다. 무엇보다 그전까지 사용하고 있던 모든 DB에 대한 O/R mapping을 쓸데 없게 만들어버린 것 뿐 아니라 모든 데이터에 대한 객체화를 만들 수 있었다는 점에서 LINQ의 위대함이 더 보이는 것 같다. 

검색, 정렬, 다른 객체와의 Join, Grouping 모든 것을 다 LINQ를 통해서 할 수 있다는 점은 LINQ에 대한 매력을 더욱더 가지고 오게 한다. 

먼저 간단한 Hello LINQ 소스를 보면..

    public class HelloLinq
    {
        public void Hello()
        {
            string[] greetings = { "Hello world", "hello LINQ", "Hello Apress" };
            var items = from s in greetings where s.EndsWith("LINQ") select s;

            foreach(string item in items)
            {
                Console.WriteLine(item);
            }
        }
    }

    public class XmlLinq
    {
        public void FindBook()
        {
            XElement books =
                XElement.Parse(
                    @"<books>
                        <book>
                        <title>Pro LINQ: Language Integrated Query in C# 2008</title>
                        <author>Joe Rattz</author>
                        </book>
                        <book>
                        <title>Pro WF: Windows Workflow in .NET 3.0</title>
                        <author>Bruce Bukovics</author>
                        </book>
                        <book>
                        <title>Pro C# 2005 and the .NET 2.0 Platform, Third Edition</title>
                        <author>Andrew Troelsen</author>
                        </book>
                        </books>");
            var titles = from book in books.Elements("book")  
                         where (string)book.Element("author") == "Joe Rattz" select book.Element("title");
            foreach(var title in titles)
            {
                Console.WriteLine(title.Value);
            }
        }
    }

데이터 array, XML, List<object> 모든것에 대한 검색 및 데이터의 selection을 다 할 수 있다. 

흔히, LINQ를 DB에서만 보는 경향이 많은데... (이건 DB Metal의 이유가 가장 클것 같다.) LINQ는 데이터에 대한 검색이라고 할 수 있다. 모든 데이터에 대한. 

LINQ는 다음과 같이 구성되어있다. 

  • LINQ to Object : IEnumerable<T>에 대한 검색 제공
  • LINQ to XML : System.Xml.Linq에서 XML에 대한 LINQ query 검색 제공
  • LINQ to SQL : DB와 연결
  • LINQ to DataSet : ASP .NET 또는 WinForm에서 주로 사용되는 DataSet과의 연결






Posted by Y2K
,