반응형
표준 질의 연산자(Standard Query Operators)
Enumerable 클래스는 System.Linq 네임스페이스에 속해 있으며 50개가 넘는 질의 연산자를 포함하는데, 이들을 표준 질의 연산자라고 한다. 이 연산자들은 몇 가지 기능별로 나눠볼 수 있다.
Linq는 다양한 형식의 컬렉션에 질의할 수 있는 간편하고 일관된 방법이다. 지연된 실행의 개념을 구현하므로 질의는 생성 시점이 아니라 열거 과정에 실행된다.
대부분의 질의 연산자가 지연 실행을 지원하지만 다음과 같은 예외적인 연산자들도 존재한다.
- Count와 First처럼 스칼라 값 혹은 요소를 한 개만 반환하는 연산자
- 질의 결과를 변환하는 변환 연산자(ToList, ToArray, ToDictionary, ToLookup)
즉, Select 메서드(IEnumerable<T> - Select - IEnumerable<Y>)처럼 시퀀스를 반환하는 메서드들은 지연 실행을 구현하며, 단일 개체를 반환하는 First와 같은 메서드(IEnumerable<X> - First - Y)는 지연 실행을 구현하지 않는다.
LINQ(Language Integrated Natural Query)에는 질의 구문과 메서드 구문, 두 가지 형태의 구문이 있다.
둘 다 사용이 가능하며 질의 구문으로 작성하면 컴파일러가 메서드 구문으로 변환해주는 식이다.
질의 구문(Query Syntax)
static void Main(string[] args)
{
string[] s = { "ironman", "captin america", "thor", "hulk" };
var e = from a in s
where a.Contains('n')
orderby a.Length
select a.ToUpper();
foreach (var i in e)
{
Console.WriteLine(i);
}
}
메서드 구문(Method Syntax)
static void Main(string[] args)
{
string[] s = { "ironman", "captin america", "thor", "hulk" };
var e = s.Where(x => x.Contains('n'))
.OrderBy(x => x.Length)
.Select(x => x.ToUpper());
foreach (var i in e)
{
Console.WriteLine(i);
}
}
필터링(Filtering)
필터링(filtering)이란 조건을 만족하는 것만 추출하기 위해 데이터 요소를 평가하는 작업이다.
투영(Projection)
- Select
- SelectMany
조인(Joining)
- Join
- GroupJoin
정렬(Ordering)
- OrderBy
- ThenBy
그룹화(Grouping)
- GroupBy
집합 연산
- Concat
- Union
- Intersect
- Except
변환 메서드(Conversion Method)
- OfType
- Cast
- ToArray
- ToList
- ToDictionary
- ToLookup
요소 연산
- First
- FirstOrDefault
- Last
- Single
- SingleOrDefault
- ElementAt
- DefaultIfEmpty
함께 읽으면 좋은 글
'프로그래밍 > C# LINQ' 카테고리의 다른 글
C# LINQ - Enumerable.TakeWhile (0) | 2024.03.28 |
---|---|
C# LINQ - Enumerable.Zip() (0) | 2024.03.05 |
C# Linq - Enumerable.Take() (0) | 2024.02.26 |
C# Linq - Enumerable.Reverse() (0) | 2024.02.19 |
C# Linq - Enumerable.OfType() (1) | 2024.02.16 |
댓글