C# 3.0부터 사용할 수 있는 기능인데 SQL 을 사용하지 않고, 코드 내에서 SQL 과 비슷한 쿼리 문을 사용하여 데이터를 처리할 수 있는 LINQ 라는 편리한 기능을 소개해 드립니다.

내부적으로 처리할 데이터가 많은 경우 유용하게 사용될 듯 합니다.

 

 

LINQ

   

LINQ 는 Visual Studio 2008부터 제공되는 기능이며 Microsoft .NET Framework 3.5부터 사용할 수 있습니다.

 

일반적으로 데이터에 대한 쿼리는 컴파일 시 형식 검사 또는 IntelliSense 지원 없이 단순 문자열로 표현됩니다. 게다가 각 데이터 소스 형식에 대해 SQL 데이터베이스, XML 문서, 다양한 웹 서비스 등 다양한 쿼리 언어를 배워야 합니다. LINQ는 C# 및 Visual Basic에서 쿼리를 고급 언어 구문으로 만듭니다. 언어 키워드 및 친숙한 연산자를 사용하여 개체에 대한 강력한 형식의 컬렉션에 대해 쿼리를 작성합니다. 다음 그림에서는 전체 형식 검사 및 IntelliSense 지원을 사용하여 C#에서 SQL Server 데이터베이스에 대해 부분적으로 완료된 LINQ 쿼리를 보여 줍니다.

 

 

 

Visual Studio에서는 Visual Basic 또는 C#을 사용하여 SQL Server 데이터베이스, XML 문서, ADO.NET 데이터 집합 및 IEnumerable 또는 제네릭 IEnumerable(Of T) 인터페이스를 지원하는 개체의 컬렉션에 대한 LINQ 쿼리를 작성할 수 있습니다. ADO.NET Entity Framework에 대한 LINQ 지원도 계획되어 있으며 여러 웹 서비스 및 다른 데이터베이스 구현에 대한 LINQ 공급자도 타사에 의해 개발되고 있습니다.

새 프로젝트의 LINQ 쿼리나 기존 프로젝트의 LINQ가 아닌 쿼리를 함께 사용할 수 있습니다. 단, 프로젝트에서 .NET Framework 버전 3.5를 대상으로 해야 합니다.

 

 

 

LINQ 작업의 3가지 부분

 

모든 LINQ 쿼리 작업은 다음과 같은 세 개의 고유한 작업으로 구성됩니다.

  1. 데이터 소스를 가져옵니다.
  2. 쿼리를 만듭니다.
  3. 쿼리를 실행합니다.

다음 예제에서는 쿼리 작업의 세 가지 부분이 소스 코드에서 표현되는 방법을 보여 줍니다. 이 예제에서는 편의상 정수 배열을 데이터 소스로 사용하지만 다른 데이터 소스에도 동일한 개념이 적용됩니다. 이 예제는 이 항목의 나머지 부분에서도 참조됩니다.

 

 

 

LINQ 간단한 예제

 

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace WATLINQ1

{

class Program

{

static void Main(string[] args)

{

// 데이터 선언

int[] numbers = new int[7] { 0, 1, 2, 3, 4, 5, 6 };

 

// 쿼리 생성 (이때 쿼리가 실행되지는 않습니다.)

var numQuery =

from num in numbers

where (num % 2) == 0

select num;

 

// 쿼리 실행

foreach (int num in numQuery)

{

Console.Write("{0,1} ", num);

}

 

}

}

}

 

 

 

결과는 아래와 같습니다.

 

 

 

 

 

지금은 if(num % 2) 와 같은 형태를 사용해도 상관 없지만

데이터의 수가 많을 때 LINQ를 사용하면 매우 효율적으로 처리할 수 있을 것입니다.

 

 

출처: http://msdn.microsoft.com/ko-kr/library/bb397906(v=VS.90).aspx

 

 

 

+ Recent posts