정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

Enumerable.AsEnumerable<TSource> 메서드

2013-12-13

입력을 IEnumerable<T>로 형식화하여 반환합니다.

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

public static IEnumerable<TSource> AsEnumerable<TSource>(
	this IEnumerable<TSource> source
)

형식 매개 변수

TSource

source의 요소 형식입니다.

매개 변수

source
형식: System.Collections.Generic.IEnumerable<TSource>
IEnumerable<T>로 형식화할 시퀀스입니다.

반환 값

형식: System.Collections.Generic.IEnumerable<TSource>
IEnumerable<T>로 형식화된 입력 시퀀스입니다.

사용 정보

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

AsEnumerable<TSource>(IEnumerable<TSource>) 메서드는 source의 컴파일 타임 형식을 IEnumerable<T>을 구현하는 형식에서 IEnumerable<T> 자체로 변경하기만 합니다.

시퀀스가 IEnumerable<T>을 구현하지만 다른 공용 쿼리 메서드 집합을 사용할 수 있는 경우 AsEnumerable<TSource>(IEnumerable<TSource>)을 사용하여 여러 가지 쿼리 구현을 선택할 수 있습니다. 예를 들어 IEnumerable<T>을 구현하고 Where, SelectSelectMany 등의 자체 메서드가 있는 Table이라는 제네릭 클래스가 있는 경우 Where를 호출하면 Table의 public Where 메서드가 호출됩니다. 데이터베이스 테이블을 나타내는 Table 형식에는 식 트리로 조건자 인수를 받아 원격 실행을 위해 트리를 SQL로 변환하는 Where 메서드가 있을 수 있습니다. 조건자가 로컬 메서드를 호출하는 경우와 같이 원격 실행이 필요하지 않은 경우 AsEnumerable<TSource> 메서드를 사용하여 사용자 지정 메서드를 숨기고 표준 쿼리 연산자를 대신 사용할 수 있습니다.

다음 코드 예제에서는 표준 쿼리 연산자 구현을 사용해야 하는 경우 AsEnumerable<TSource>(IEnumerable<TSource>) 메서드를 사용하여 형식의 사용자 지정 Where 메서드를 숨기는 방법을 보여 줍니다.


   // Custom class.
   class Clump<T> : List<T>
   {
      // Custom implementation of Where().
      public IEnumerable<T> Where(Func<T, bool> predicate)
      {
         outputBlock.Text += "In Clump's implementation of Where()." + "\n";
         return Enumerable.Where(this, predicate);
      }
   }

   static void AsEnumerableEx1()
   {
      // Create a new Clump<T> object.
      Clump<string> fruitClump =
          new Clump<string> { "apple", "passionfruit", "banana", 
                 "mango", "orange", "blueberry", "grape", "strawberry" };

      // First call to Where():
      // Call Clump's Where() method with a predicate.
      IEnumerable<string> query1 =
          fruitClump.Where(fruit => fruit.Contains("o"));

      outputBlock.Text += "query1 has been created.\n" + "\n";

      // Second call to Where():
      // First call AsEnumerable() to hide Clump's Where() method and thereby
      // force System.Linq.Enumerable's Where() method to be called.
      IEnumerable<string> query2 =
          fruitClump.AsEnumerable().Where(fruit => fruit.Contains("o"));

      // Display the output.
      outputBlock.Text += "query2 has been created." + "\n";
   }

   // This code produces the following output:
   //
   // In Clump's implementation of Where().
   // query1 has been created.
   //
   // query2 has been created.



Windows Phone OS

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

Windows Phone

표시: