메서드에서 쿼리를 반환하는 방법
이 예제는 메서드에서 반환 값 및 out 매개 변수로서 쿼리를 반환하는 방법을 보여 줍니다.
쿼리 개체는 구성 가능하므로 메서드에서 쿼리를 반환할 수 있습니다. 쿼리를 나타내는 개체는 결과 컬렉션을 저장하지 않고, 대신 필요할 때 결과를 생성하는 단계를 저장합니다. 메서드에서 쿼리 개체를 반환하는 경우 메서드를 추가로 작성하거나 수정할 수 있다는 이점이 있습니다. 따라서 쿼리를 반환하는 메서드의 반환 값 또는 out 매개 변수도 해당 형식을 가지고 있어야 합니다. 메서드가 쿼리를 구체적인 List<T> 또는 Array 형식으로 구체화하는 경우 쿼리 자체가 아니라 쿼리 결과를 반환하는 것으로 간주됩니다. 메서드에서 반환되는 쿼리 변수는 여전히 구성 또는 수정 가능합니다.
예시
다음 예제에서 첫 번째 메서드 QueryMethod1 는 쿼리를 반환 값으로 반환하고 두 번째 메서드 QueryMethod2 는 쿼리를 out 매개 변수로 반환합니다(returnQ 예제에서). 두 경우 모두 쿼리 결과가 아니라 쿼리가 반환됩니다.
IEnumerable<string> QueryMethod1(int[] ints) =>
from i in ints
where i > 4
select i.ToString();
void QueryMethod2(int[] ints, out IEnumerable<string> returnQ) =>
returnQ =
from i in ints
where i < 4
select i.ToString();
int[] nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
var myQuery1 = QueryMethod1(nums);
쿼리 myQuery1 는 다음 foreach 루프에서 실행됩니다.
foreach (var s in myQuery1)
{
Console.WriteLine(s);
}
마우스 포인터를 놓아 myQuery1 형식을 확인합니다.
를 사용하지 myQuery1않고 직접 반환된 QueryMethod1 쿼리를 실행할 수도 있습니다.
foreach (var s in QueryMethod1(nums))
{
Console.WriteLine(s);
}
마우스 포인터를 호출 QueryMethod1 위에 놓아 반환 형식을 확인합니다.
QueryMethod2 는 쿼리를 out 매개 변수의 값으로 반환합니다.
QueryMethod2(nums, out IEnumerable<string> myQuery2);
// Execute the returned query.
foreach (var s in myQuery2)
{
Console.WriteLine(s);
}
쿼리 컴퍼지션을 사용하여 쿼리를 수정할 수 있습니다. 이 경우 이전 쿼리 개체를 사용하여 새 쿼리 개체를 만듭니다. 이 새 개체는 원래 쿼리 개체와 다른 결과를 반환합니다.
myQuery1 =
from item in myQuery1
orderby item descending
select item;
// Execute the modified query.
Console.WriteLine("\nResults of executing modified myQuery1:");
foreach (var s in myQuery1)
{
Console.WriteLine(s);
}
참고 항목
.NET feedback
피드백
다음에 대한 사용자 의견 제출 및 보기