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과의 연결