내보내기(0) 인쇄
모두 확장
정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

Enumerable.Select<TSource, TResult> 메서드 (IEnumerable<TSource>, Func<TSource, Int32, TResult>)

2013-12-13

요소의 인덱스를 통합하여 시퀀스의 각 요소를 새 폼에 프로젝션합니다.

Namespace:  System.Linq
어셈블리:  System.Core(System.Core.dll)

public static IEnumerable<TResult> Select<TSource, TResult>(
	this IEnumerable<TSource> source,
	Func<TSource, int, TResult> selector
)

형식 매개 변수

TSource

source의 요소 형식입니다.

TResult

selector에서 반환되는 값의 형식입니다.

매개 변수

source
형식: System.Collections.Generic.IEnumerable<TSource>
변형 함수를 호출할 값 시퀀스입니다.
selector
형식: System.Func<TSource, Int32, TResult>
각 소스 요소에 적용할 변형 함수입니다. 이 함수의 두 번째 매개 변수는 소스 요소의 인덱스를 나타냅니다.

반환 값

형식: System.Collections.Generic.IEnumerable<TResult>
포함하는 요소가 source의 각 요소에서 변형 함수를 호출한 결과인 IEnumerable<T>입니다.

사용 정보

Visual Basic 및 C#에서는 이 메서드를 IEnumerable<TSource> 형식의 모든 개체에서 인스턴스 메서드로 호출할 수 있습니다. 인스턴스 메서드 구문을 사용하여 이 메서드를 호출할 경우에는 첫 번째 매개 변수를 생략합니다.

예외조건
ArgumentNullException

source 또는 selectornull입니다.

이 메서드는 지연된 실행을 사용하여 구현됩니다. 해당 작업을 수행하는 데 필요한 모든 정보가 저장된 개체가 즉시 반환됩니다. 이 메서드에서 나타내는 쿼리는 해당 GetEnumerator 메서드를 직접 호출하거나, foreach(Visual C#에서) 또는 For Each(Visual Basic에서)를 사용하여 개체를 열거할 때까지 실행되지 않습니다.

selector에 대한 첫 번째 인수는 처리할 요소를 나타냅니다. selector에 대한 두 번째 인수는 소스 시퀀스에서 해당 요소의 인덱스(0부터 시작)를 나타냅니다. 예를 들어 요소의 순서가 알려져 있고 특정 인덱스에 있는 요소를 사용하려는 경우 이 인수가 유용할 수 있습니다. 하나 이상의 요소에 대한 인덱스를 검색하려는 경우에도 이 인수가 유용할 수 있습니다.

이 프로젝션 메서드에는 소스 시퀀스인 source의 각 값에 대해 단일 값을 생성하는 변형 함수인 selector가 필요합니다. selector가 반환하는 값이 컬렉션이면 소비자가 결과 컬렉션을 직접 탐색해야 합니다. 이러한 경우에는 쿼리에서 결합된 단일 값 시퀀스를 반환하는 것이 좋습니다. 이렇게 하려면 Select 메서드 대신 SelectMany 메서드를 사용합니다. SelectMany의 작동 방식은 Select와 비슷하지만 변형 함수에서 SelectMany를 통해 컬렉션을 확장한 다음 반환한다는 점이 다릅니다.

다음 코드 예제에서는 Select<TSource, TResult>(IEnumerable<TSource>, Func<TSource, Int32, TResult>)을 사용하여 값 시퀀스를 투영하고 각 요소 인덱스를 사용하는 방법을 보여 줍니다.


      string[] fruits = { "apple", "banana", "mango", "orange", 
                               "passionfruit", "grape" };

      var query =
          fruits.Select((fruit, index) =>
                            new { index, str = fruit.Substring(0, index) });

      foreach (var obj in query)
      {
         outputBlock.Text += String.Format("{0}", obj) + "\n";
      }

      /*
       This code produces the following output:

       {index=0, str=}
       {index=1, str=b}
       {index=2, str=ma}
       {index=3, str=ora}
       {index=4, str=pass}
       {index=5, str=grape}
      */



Windows Phone OS

지원되는 버전: 8.0, 7.1, 7.0

Windows Phone

표시:
© 2014 Microsoft