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 쿼리 작업은 다음과 같은 세 개의 고유한 작업으로 구성됩니다.
- 데이터 소스를 가져옵니다.
- 쿼리를 만듭니다.
- 쿼리를 실행합니다.
다음 예제에서는 쿼리 작업의 세 가지 부분이 소스 코드에서 표현되는 방법을 보여 줍니다. 이 예제에서는 편의상 정수 배열을 데이터 소스로 사용하지만 다른 데이터 소스에도 동일한 개념이 적용됩니다. 이 예제는 이 항목의 나머지 부분에서도 참조됩니다.
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
'스터디 > C#.NET:자료' 카테고리의 다른 글
C#, DateTimePicker 사용 (0) | 2012.06.08 |
---|---|
C#, Form 속에 Form 넣기 (Page형태) (0) | 2012.06.06 |
C#, Form 속에 Form 넣기 (MDI형태) (2) | 2012.06.06 |
Visual Studio와 구글 SVN, SubVersion 연동 (0) | 2012.04.28 |
C#, LINQ, 사용자 정의 클래스 검색 방법 (0) | 2011.11.13 |
C#, 텍스트박스에서 커서 항상 아래에 있게 (0) | 2011.11.04 |
C#, 파일 경로 관리(계산) (0) | 2011.09.15 |
C#, C 에서의 union 기능 사용하기 (4) | 2011.08.03 |
C#, 타이틀바 잡지 않고 윈도우 폼 이동하기 (0) | 2011.05.17 |
C#, 파일 읽어 ListView에 출력 (0) | 2011.05.14 |