Enumerable 확장 메서드의 예제
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
)
아래는 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"));
또 다른 예로서 아래 예제는 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));
}
본 웹사이트는 광고를 포함하고 있습니다. 광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.