C# Linq

Posted by 알 수 없는 사용자
2015. 5. 18. 11:24 프로그래밍/C#

LINQ는 Language Integrated Query의 약자로 통합질의언어라고 말한다.

이름에서 보면 무언가 통합된 언어라는 의미인데, SQL의 Select구문과 유사한 구문을 이용하여 

컬렉션 형태의 데이터에 대해 질의를 통한 데이터처리가 가능하다. 

LINQ는 MS-SQL의 데이터나 메모리에 있는 컬렉션 객체, XML에서 사용된다.


다음과 같이 학생 객체가 있다.




예를 들어 학생 리스트 중에서 A학점인 학생을 나이 순으로 정렬하고 싶다고 하자.

LINQ를 사용하지 않는 일반 코드를 이용하면 다음과 같이 표현할 수 있을 것이다.



List객체에서 사용가능한 함수와 람다식을 이용하여 최대한 간단하게 작성해 보았다.

그럼 LINQ를 이용한 코드를 한번 보자



람다식을 이용한 코드도 굉장히 간단하다고 생각했는데

LINQ를 이용하면 좀 더 간단한 표현이 가능하다.


그럼 위에서 작성한 LINQ구문을 다시 잘 살펴보자

FROM, WHERE, ORDER등이 쓰이는 것을 보니 SQL과 유사하다는 것을 알 수 있다.

SQL과 비슷하여 이해되겠지만 하나씩 보도록 하자.


우선 from은 범위를 지정해 주는 부분이다.

foreach에서도 괄호 안에 범위를 지정하듯이 from뒤에 범위를 지정하면 된다.



그 다음 where은 조건을 정의하는 부분이다.
데이터에 대한 필터가 필요하다면 여기에 조건을 작성하면 된다.


order는 정렬을 정의하는 부분이다.

order + 정렬될 객체 뒤에 아무것도 없으면 오름차순으로 정렬되고, 반대로 내림차순으로 정렬하고 싶다면 desending을 추가한다.



마지막으로 select에서는 추출할 데이터를 정의하면 된다.



전체 객체 추출도 가능하고 다음과 같이 필요한 데이터만 추출하는 것도 가능하다.




'프로그래밍 > C#' 카테고리의 다른 글

C# 람다식(Lamda Expression)  (9) 2015.04.11
C# 대리자(Delegate)  (288) 2015.04.08
C# 가비지 컬렉션(Garbage Collection)  (1274) 2015.03.23
C# 기본자료형, 변수  (10) 2015.03.22