Condividi tramite


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);
}

Vedere anche

Riferimento

DataServiceQuery<TElement> Classe

Spazio dei nomi System.Data.Services.Client