Metodo DataServiceQuery<TElement>.AddQueryOption
Crea un nuovo oggetto DataServiceQuery<TElement> con il set di opzioni query nell'URI generato dalla query restituita.
Spazio dei nomi System.Data.Services.Client
Assembly: Microsoft.Data.Services.Client (in Microsoft.Data.Services.Client.dll)
Sintassi
'Dichiarazione
Public Function AddQueryOption ( _
name As String, _
value As Object _
) As DataServiceQuery(Of TElement)
'Utilizzo
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>
Parametri
- name
Tipo: System.String
Valore stringa che contiene il nome dell'opzione della stringa di query da aggiungere.
- value
Tipo: System.Object
Oggetto che contiene il valore dell'opzione della stringa di query.
Valore restituito
Tipo: System.Data.Services.Client.DataServiceQuery<TElement>
Nuova query che include l'opzione query richiesta aggiunta all'URI della query fornita.
Osservazioni
Le opzioni query vengono aggiunte all'URI risultante utilizzando la sintassi ?name=value&name2=value2... in cui il mapping del nome viene eseguito direttamente al parametro name e il parametro value viene ottenuto chiamando ToString sul parametro value. Il parametro name inizia con $.
La sintassi non di WCF Data Services non inizia con $. È possibile aggiungere le opzioni query non di WCF Data Services utilizzando questo metodo. È consentito aggiungere due volte la stessa opzione query se non si tratta di un'opzione query di WCF Data Services. Se viene aggiunta un'opzione query che è già presente nell'URI sottostante, viene generata un'eccezione.
Non è possibile aggiungere l'opzione query $select a un URI di query utilizzando il metodo AddQueryOption(String, Object). È consigliabile utilizzare il metodo LINQ Select<TSource, TResult>(IEnumerable<TSource>, Func<TSource, TResult>) e consentire al client di generare l'opzione query $select nell'URI della richiesta.
Esempi
Nell'esempio seguente viene illustrato l'utilizzo di un oggetto DataServiceQuery<TElement> con chiamate del metodo AddQueryOption sequenziali per restituire solo gli ordini con un costo spedizione maggiore di 30 dollari ed eseguire l'ordinamento dei risultati in senso decrescente in base alla data di spedizione.
' 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);
}
Nell'esempio seguente viene illustrato come creare una query LINQ equivalente alla query precedente utilizzata dal metodo AddQueryOption.
' 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);
}