Enumerable 확장 메서드의 예제
System.Linq.Enumerable 클래스는 LINQ 쿼리에서 사용되는 많은 확장 메서드들을 포함하는 클래스이다. 한 예를 들어, Enumerable 클래스는 다음과 같은 Where() 확장메서드를 포함하고 있다. 첫번째 파라미터는 이 메서드가 IEnumerable<T> 인터페이스를 지원하는 모든 Type에 사용된다는 것을 의미한다. 두번째 파라미터는 Func 라는 Delegate를 받아들인다는 것을 의미하는데, 보통 여기에는 LINQ 쿼리를 람다식 (Lambda Expression)으로 표현하여 넣게 된다.
System.Linq.Enumerable 클래스는 LINQ 쿼리에서 사용되는 많은 확장 메서드들을 포함하는 클래스이다. 한 예를 들어, Enumerable 클래스는 다음과 같은 Where() 확장메서드를 포함하고 있다. 첫번째 파라미터는 이 메서드가 IEnumerable<T> 인터페이스를 지원하는 모든 Type에 사용된다는 것을 의미한다. 두번째 파라미터는 Func 라는 Delegate를 받아들인다는 것을 의미하는데, 보통 여기에는 LINQ 쿼리를 람다식 (Lambda Expression)으로 표현하여 넣게 된다.
예제
// LINQ에 정의된 Where 확장메서드
public static IEnumerable<TSource> Where<TSource>(
this IEnumerable<TSource> source,
Func<TSource, bool> predicate
)
public static IEnumerable<TSource> Where<TSource>(
this IEnumerable<TSource> source,
Func<TSource, bool> predicate
)
아래는 Where() 확장메서드를 사용하는 예제이다. Where() 확장메서드의 첫번째 파라미터에 해당되는 this IEnumerable<T>은 IEnumerable<T>를 갖는 클래스에서 사용된다는 의미인데, 변수 list 객체가 IEnumerable을 구현한 문자열 리스트이므로 list.Where()처럼 사용할 수 있다. 아래 예에서 Where() 안의 파라미터는 람다식 표현으로 Element중 A로 시작되는 문자열들만 선별하는 것을 의미한다.
예제
// Where 확장메서드를 List<T>에서 사용
List<string> list = new List<string> { "Apple", "Grape", "Banana" };
IEnumerable<string> q = list.Where(p => p.StartsWith("A"));
List<string> list = new List<string> { "Apple", "Grape", "Banana" };
IEnumerable<string> q = list.Where(p => p.StartsWith("A"));
또 다른 예로서 아래 예제는 Where() 확장 메서드를 정수 리스트에 적용하여 3으로 나누어 떨어지는 데이타만 출력해 본 것이다. Where()의 리턴 값은 IEnumerable<int>인데, 이를 동적배열(List)로 변경하기 위해 ToList() 메서드를 사용하였다.
예제
static void Main(string[] args)
{
List<int> nums = new List<int> { 55, 44, 33, 66, 11 };
// Where 확장 메서드 정수 리스트에 사용
var v = nums.Where(p => p % 3 == 0);
// IEnumerable<int> 결과를 정수리스트로 변환
List<int> arr = v.ToList<int>();
// 리스트 출력
arr.ForEach(n => Console.WriteLine(n));
}
{
List<int> nums = new List<int> { 55, 44, 33, 66, 11 };
// Where 확장 메서드 정수 리스트에 사용
var v = nums.Where(p => p % 3 == 0);
// IEnumerable<int> 결과를 정수리스트로 변환
List<int> arr = v.ToList<int>();
// 리스트 출력
arr.ForEach(n => Console.WriteLine(n));
}
C# 동영상 강의 : C# 확장메서드 (Extension Method) [레벨] 중급 [C# 중급] C# 확장메서드 (Extension Method)의 개념을 설명하고, 구조체, 클래스, 인터페이스 각각에서 확장메서드를 사용하는 예제를 소개합니다. |