티스토리 뷰

프로그래밍

LINQ는 무엇인가?

야라바 2016. 9. 8. 14:15


 ※ LINQ 연관글 모음

 


ASP.NET을 공부하면서 새롭게 만난 단어 LINQ, 어디서 들어 본듯한데 가물 가물하고, 그래서 이번 포스팅은 LINQ에 대해서 자세하게 알아볼까 합니다. LINQ는 Language-Integrated Query에서 따온 것으로 번역하면 "언어에 통합된 질의" 정도가 선명할것 같습니다. 

conn = new MySqlConnection(connstr);
conn.Open();

conn.ChangeDatabase(dbname);
cmd = new MySqlCommand("SET NAMES UTF8", conn);
cmd.ExecuteNonQuery();

cmd.CommandText = "SET COLLATION_CONNECTION=UTF8_GENERAL_CI";
cmd.ExecuteNonQuery();

chgcmd = new MySqlCommand("UPDATE master SET stat = 1 WHERE name = 'guest'", conn);

위의 예제 코드는 C#으로 작성한 MySQL DBMS 연결 및 질의 과정으로 SQL 질의문은 통상 ""으로 묶어서 명백히 구분되는 문자열로 기술합니다.  C# 언어 입장에서는 SQL 질의문이 단순 문자열이기 때문에 C#이나 VB.NET같은 언어 요소의 하나라고 말하기에는 무리입니다. 

using (var context = new ApplicationDbContext())
{
    clients = (from client in context.Users
           where client.Email.Contains(searchstr)
           || client.UserName.Contains(searchstr)
           && client.Roles.Select(r => r.Name).Contains("client")
           select client).ToList();
}

위의 코드는 C# LINQ 예제입니다.  SQL 질의문 속에 있어야 할 "from", "where", "select"등이 스트링으로 처리되지 않고 C# 언어의 일부로 기술되어서 내부 변수와 자연스럽게 섞여 있습니다. SQL의 AND, OR등의 키워드 대신 C# 구문인 &&, ||이 조건을 기술하는데 쓰이고 있습니다. 자세한 내용은 아래의 링크를 참조하면 됩니다.

https://msdn.microsoft.com/ko-kr/library/bb397926.aspx

MS에서 제공하고 있는 다양한 예제 코드를 받으려면 아래의 링크를 통해서 다운로드 받으시면 됩니다.

LINQ 예제 코드 다운로드

비주얼스튜디오 2008에 처음 소개된 LINQ는 위에서 소개한 대로 C#이나 VB.NET과 자연스럽게 섞여서 프로그래머로 하여금 데이터 처리 과정을 보다 용이하게 할 수 있도록 해준 것이지만 LINQ가 SQL을 대신하는 것에 그치지 않고 데이터 저장소를 DB에서 XML이나 .NET 오브젝트, Dataset, Entity등으로 자연스럽게 확장할 수 있습니다. 하나의 LINQ를 활용한 데이터 처리 로직으로 다양한 데이터 소스를 다룰 수 있다는 것입니다. DBMS의 경우에도 NuGet 을 통해서 LINQ to MySQL, LINQ to FireBird등 SQL Server가 아닌 타사 DBMS를 LINQ를 통해 사용할 수 있습니다. 프로그램 메모리에 있는 오브젝트에 대해서도 XML 파일도 다양한 DBMS도 LINQ로 사용할 수 있음은 개발자에게는 상당한 매력입니다.

단순화한 도표를 통해서 다시 한번 살펴보면 C#이나 VB.NET으로 작성하는 응용 프로그램에서 LINQ구문을 통해서 데이터 질의를 수행하면 실제 수행은 LINQ to SQL을 거쳐 ADO.NET을 통해서 DBMS에 SQL 질의로 전달하고 그 질의 결과는 .NET 오브젝트 형태로 전환되어 프로그램 내부에서 간편하게 사용할 수 있게 되는 것입니다. 전체적인 그림으로 나타내면 아래와 같습니다.

 



댓글
댓글쓰기 폼