728x90
LINQ 란?
지연된 쿼리를 지원하고 다양한 데이터 저장소에 대해 쿼리를 수행할 수 있는 통합 구문을 제공하는 기능.
C# 3.0에 추가된 기능이다.
쿼리 제공자를 자유롭게 구현할 수 있다.
LINQ의 목표
데이터 소스의 유형과 상관없이 동일한 작업을 수행하는 코드를 손쉽게 작성하는 것.
시퀀스를 반환해야 할 때
메서드를 작성하다보면 단일의 객체를 반환하기보다 일련의 시퀀스를 반환해야 하는 경우가 있다.
이때 컬렉션보다 이터레이터를 반환하는 것이 좋다.
이터레이터 메서드란?
호출자가 요청한 시퀀스를 생성하기 위해 yield return 문을 사용하는 메서드.
언제 이터레이터 메서드를 이용하여 시퀀스를 생성해야 하는가?
메서드가 반환하는 시퀀스를 캐싱할 때 IEnumerable와 같은 인터페이스를 반환하도록 메서드를 작성하는 것이 더 편리하다.
필요할 때마다 항목을 생성할 수 있고, ToList()나 ToArray()를 이용하여 전체 시퀀스가 저장된 컬렉션을 생성할 수 있다.
반응형
'개발공부 > C#' 카테고리의 다른 글
[Effective C#] 아이템 31 : 시퀀스에 사용할 수 있는 조합 가능한 API를 작성해라 (0) | 2021.12.07 |
---|---|
[Effective C#] 아이템 30: 루프보다 쿼리 구문이 낫다. (0) | 2021.12.06 |
[Effective C#] 아이템 28 : 확장 메서드를 이용하여 구체화된 제네릭 타입을 개선하라 (0) | 2021.12.04 |
[Effective C#] 아이템 27 : 인터페이스는 간략히 정의하고 기능의 확장은 확장 메서드를 사용하라 (0) | 2021.12.03 |
[Effective C#] 아이템 26 : 제네릭 인터페이스와 논제네릭 인터페이스를 함께 구현하라 (0) | 2021.12.02 |