DataServiceQuery<TElement>.AddQueryOption 메서드
반환된 쿼리에 의해 생성되는 URI에 설정된 쿼리 옵션을 사용하여 새 DataServiceQuery<TElement>를 만듭니다.
네임스페이스: System.Data.Services.Client
어셈블리: Microsoft.Data.Services.Client(Microsoft.Data.Services.Client.dll)
구문
‘선언
Public Function AddQueryOption ( _
name As String, _
value As Object _
) As DataServiceQuery(Of TElement)
‘사용 방법
Dim instance As DataServiceQuery
Dim name As String
Dim value As Object
Dim returnValue As DataServiceQuery(Of TElement)
returnValue = instance.AddQueryOption(name, _
value)
public DataServiceQuery<TElement> AddQueryOption(
string name,
Object value
)
public:
DataServiceQuery<TElement>^ AddQueryOption(
String^ name,
Object^ value
)
member AddQueryOption :
name:string *
value:Object -> DataServiceQuery<'TElement>
public function AddQueryOption(
name : String,
value : Object
) : DataServiceQuery<TElement>
매개 변수
- name
유형: System.String
추가할 쿼리 문자열 옵션의 이름을 포함하는 문자열 값입니다.
- value
유형: System.Object
쿼리 문자열 옵션의 값을 포함하는 개체입니다.
반환 값
유형: System.Data.Services.Client.DataServiceQuery<TElement>
제공된 쿼리의 URI에 추가되는 요청된 쿼리 옵션을 포함하는 새 쿼리입니다.
주의
?name=value&name2=value2... 구문을 사용하여 쿼리 옵션이 결과 URI에 추가됩니다. 여기서 이름은 name 매개 변수에 직접 매핑되고 value는 value 매개 변수에서 ToString을 호출하여 구합니다. name은 $로 시작합니다.
비 WCF Data Services 구문은 $로 시작하지 않습니다. 비 WCF Data Services 쿼리 옵션은 이 메서드를 사용하여 추가할 수 있습니다. 옵션이 WCF Data Services 쿼리 옵션이 아닌 경우 동일한 쿼리 옵션을 두 번 추가할 수 있습니다. 기본 URI에 이미 있는 쿼리 옵션을 추가하면 예외가 throw됩니다.
$select 쿼리 옵션은 AddQueryOption(String, Object) 메서드를 사용하여 쿼리 URI에 추가할 수 없습니다. LINQ Select<TSource, TResult>(IEnumerable<TSource>, Func<TSource, TResult>) 메서드를 사용하여 클라이언트에서 요청 URI에 $select 쿼리 옵션을 생성하도록 하는 것이 좋습니다.
예
다음 예제에서는 순차적 AddQueryOption 메서드 호출과 함께 사용되어 운송료가 $30를 초과하는 주문만 반환하고 운송 날짜의 내림차순으로 결과를 정렬하는 DataServiceQuery<TElement>를 보여 줍니다.
' Create the DataServiceContext using the service URI.
Dim context = New NorthwindEntities(svcUri)
' Define a query for orders with a Freight value greater than 30
' and that is ordered by the ship date, descending.
Dim selectedOrders As DataServiceQuery(Of Order) = context.Orders _
.AddQueryOption("$filter", "Freight gt 30") _
.AddQueryOption("$orderby", "OrderID desc")
Try
' Enumerate over the results of the query.
For Each order As Order In selectedOrders
Console.WriteLine("Order ID: {0} - Ship Date: {1} - Freight: {2}", _
order.OrderID, order.ShippedDate, order.Freight)
Next
Catch ex As DataServiceQueryException
Throw New ApplicationException( _
"An error occurred during query execution.", ex)
End Try
// Create the DataServiceContext using the service URI.
NorthwindEntities context = new NorthwindEntities(svcUri);
// Define a query for orders with a Freight value greater than 30
// and that is ordered by the ship date, descending.
DataServiceQuery<Order> selectedOrders = context.Orders
.AddQueryOption("$filter", "Freight gt 30")
.AddQueryOption("$orderby", "OrderID desc");
try
{
// Enumerate over the results of the query.
foreach (Order order in selectedOrders)
{
Console.WriteLine("Order ID: {0} - Ship Date: {1} - Freight: {2}",
order.OrderID, order.ShippedDate, order.Freight);
}
}
catch (DataServiceQueryException ex)
{
throw new ApplicationException(
"An error occurred during query execution.", ex);
}
다음 예제에서는 AddQueryOption을 사용한 앞의 쿼리와 동등한 LINQ 쿼리를 작성하는 방법을 보여 줍니다.
' Create the DataServiceContext using the service URI.
Dim context = New NorthwindEntities(svcUri)
' Define a query for orders with a Freight value greater than 30
' and that is ordered by the ship date, descending.
Dim selectedOrders = From o In context.Orders _
Where (o.Freight > 30) _
Order By o.ShippedDate Descending _
Select o
Try
' Enumerate over the results of the query.
For Each order As Order In selectedOrders
Console.WriteLine("Order ID: {0} - Ship Date: {1} - Freight: {2}", _
order.OrderID, order.ShippedDate, order.Freight)
Next
Catch ex As DataServiceQueryException
Throw New ApplicationException( _
"An error occurred during query execution.", ex)
End Try
// Create the DataServiceContext using the service URI.
NorthwindEntities context = new NorthwindEntities(svcUri);
// Define a query for orders with a Freight value greater than 30
// and that is ordered by the ship date, descending.
var selectedOrders = from o in context.Orders
where o.Freight > 30
orderby o.ShippedDate descending
select o;
try
{
// Enumerate over the results of the query.
foreach (Order order in selectedOrders)
{
Console.WriteLine("Order ID: {0} - Ship Date: {1} - Freight: {2}",
order.OrderID, order.ShippedDate, order.Freight);
}
}
catch (DataServiceQueryException ex)
{
throw new ApplicationException(
"An error occurred during query execution.", ex);
}