728x90
반응형
IEnumerable
interface
Namespace : System.Collections
하나의 메소드(GetEnumerator())만 가지고 있다.
IEnumerable<T>의 메서드만 확인해보면, GetEnumerator()를 확인할 수 있다. 나머지 함수들은 System.Object class에서 제공하는 함수들이다.
Enumerable
class
Namespace : System.Linq
대부분의 함수들은 IEnumerable<T> 확장 함수(Extension Method)를 가지고 있다. 따라서 IEnumerable<T>를 구현하는 모든 object에서 instance method처럼 호출해서 사용할 수 있다.
Extension Methods in IEnumerable
Extension Method란?
static class 안에 static method
클래스에 직접 메서드를 추가하지 않고, 외부에서 정의함으로 마치 그 클래스의 기능을 확장한 인스턴스 메서드를 추가한 것처럼 사용할 수 있다.
함수의 첫번째 파라미터로 클래스 타입을 지정한다.
Cast<TResult>
generic method
ArrayList처럼 non-generic type에서 LINQ를 사용할 수 있도록 한다.
var primes = new ArrayList
{
5,
3,
2,
7
};
var primeQuery = primes.Cast<int>().OrderBy(prime => prime).Select(prime => prime);
OfType<TResult>
특정 타입만 필터링 한다.
var cities = new ArrayList
{
"London",
"Paris",
"Madrid",
"Berlin",
7,
"Lisbon"
};
var cityQuery = cities.OfType<string>();
AsQueryable
IEnumerable을 IQueryable로 convert한다.
IEnumerable은 client side에서 LINQ를 사용하여 로드된 collections에 적합하고, IQueryable은 server side에서 가져올 데이터의 SQL Query를 작성하여, 필터된 데이터를 client side로 보낸다.
728x90
반응형
'C#' 카테고리의 다른 글
C#] System.Security.Cryptography (0) | 2023.01.16 |
---|---|
C#] ConcurrentBag (0) | 2023.01.11 |
구성관리자] 조건부 컴파일 기호, connectionStrings 관리 (0) | 2022.12.14 |
C#] MSSQL AES128/256, SHA256 암복호화 어셈블리 DLL 만들기 (0) | 2022.12.09 |
C#] Windows 서비스에 설치 관리자 추가 (0) | 2022.11.24 |
댓글