Enumerable.AsEnumerable<TSource>(IEnumerable<TSource>) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
IEnumerable<T>로 형식화된 입력을 반환합니다.
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static System::Collections::Generic::IEnumerable<TSource> ^ AsEnumerable(System::Collections::Generic::IEnumerable<TSource> ^ source);
public static System.Collections.Generic.IEnumerable<TSource> AsEnumerable<TSource> (this System.Collections.Generic.IEnumerable<TSource> source);
static member AsEnumerable : seq<'Source> -> seq<'Source>
<Extension()>
Public Function AsEnumerable(Of TSource) (source As IEnumerable(Of TSource)) As IEnumerable(Of TSource)
형식 매개 변수
- TSource
source
요소의 형식입니다.
매개 변수
- source
- IEnumerable<TSource>
IEnumerable<T>로 형식화할 시퀀스입니다.
반환
IEnumerable<T>로 형식화된 입력 시퀀스입니다.
예제
다음 코드 예제에서는 표준 쿼리 연산자 구현이 필요한 경우 를 사용하여 AsEnumerable<TSource>(IEnumerable<TSource>) 형식의 사용자 지정 Where
메서드를 숨기는 방법을 보여 줍니다.
// Custom class.
class Clump<T> : List<T>
{
// Custom implementation of Where().
public IEnumerable<T> Where(Func<T, bool> predicate)
{
Console.WriteLine("In Clump's implementation of Where().");
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"));
Console.WriteLine("query1 has been created.\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.
Console.WriteLine("query2 has been created.");
}
// This code produces the following output:
//
// In Clump's implementation of Where().
// query1 has been created.
//
// query2 has been created.
Dim output As New System.Text.StringBuilder
' A custom class.
Class Clump(Of T)
Inherits List(Of T)
' Constructor.
Public Sub New(ByVal collection As IEnumerable(Of T))
MyBase.New(collection)
End Sub
' Custom implementation of Where().
Function Where(ByVal predicate As Func(Of T, Boolean)) As IEnumerable(Of T)
output.AppendLine("In Clump's implementation of Where().")
Return Enumerable.Where(Me, predicate)
End Function
End Class
Sub AsEnumerableEx1()
' Create a new Clump(Of T) object.
Dim fruitClump As New Clump(Of String)(New String() _
{"apple", "passionfruit", "banana",
"mango", "orange", "blueberry",
"grape", "strawberry"})
' First call to Where():
' Call Clump's Where() method with a predicate.
Dim query1 As IEnumerable(Of String) =
fruitClump.Where(Function(fruit) fruit.Contains("o"))
output.AppendLine("query1 has been created." & vbCrLf)
' 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.
Dim query2 As IEnumerable(Of String) =
fruitClump.AsEnumerable().Where(Function(fruit) fruit.Contains("o"))
output.AppendLine("query2 has been created.")
' Display the output.
Console.WriteLine(output.ToString())
End Sub
' This code produces the following output:
'
' In Clump's implementation of Where().
' query1 has been created.
'
' query2 has been created.
설명
메서드는 AsEnumerable<TSource>(IEnumerable<TSource>) 를 구현 IEnumerable<T> 하는 형식에서 자체로 컴파일 시간 형식 source
을 변경하는 것 IEnumerable<T> 외에는 효과가 없습니다.
AsEnumerable<TSource>(IEnumerable<TSource>) 는 시퀀스가 구현 IEnumerable<T> 될 때 쿼리 구현 중에서 선택할 수 있지만 다른 공용 쿼리 메서드 집합을 사용할 수도 있습니다. 예를 들어 , SelectMany
Select
및 와 같은 Where
고유한 메서드를 구현 IEnumerable<T> 하고 포함하는 제네릭 클래스 Table
가 지정된 경우 에 대한 Where
호출은 의 Table
public Where
메서드를 호출합니다. Table
데이터베이스 테이블을 나타내는 형식에는 조건자 인수를 식 트리로 사용하고 원격 실행을 위해 트리를 SQL로 변환하는 메서드가 있을 Where
수 있습니다. 예를 들어 조건자가 로컬 메서드를 호출하기 때문에 원격 실행을 원하지 않는 경우 메서드를 사용하여 사용자 지정 메서드 AsEnumerable 를 숨기고 대신 표준 쿼리 연산자를 사용할 수 있도록 할 수 있습니다.
적용 대상
.NET