Compartir a través de


DataServiceQuery<TElement>.AddQueryOption Método

Crea un nuevo DataServiceQuery<TElement> con la opción de consulta establecida en el URI generado por la consulta devuelta.

Espacio de nombres:  System.Data.Services.Client
Ensamblado:  Microsoft.Data.Services.Client (en Microsoft.Data.Services.Client.dll)

Sintaxis

'Declaración
Public Function AddQueryOption ( _
    name As String, _
    value As Object _
) As DataServiceQuery(Of TElement)
'Uso
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>

Parámetros

  • name
    Tipo: System.String
    Valor de cadena que contiene el nombre de la opción de cadena de consulta que se va a agregar.
  • value
    Tipo: System.Object
    Objeto que contiene el valor de la opción de cadena de consulta.

Valor devuelto

Tipo: System.Data.Services.Client.DataServiceQuery<TElement>
Nueva consulta que incluye la opción de consulta solicitada anexada al URI de la consulta proporcionada.

Comentarios

Las opciones de consulta se agregan al URI resultante usando la sintaxis ?name=value&name2=value2..., donde el nombre se asigna directamente al parámetro name y value se obtiene llamando a ToString en el parámetro value. name empieza con $.

La sintaxis que no es de Servicios de datos de Microsoft WCF no empieza por $. Se pueden agregar opciones de consulta que no son de Servicios de datos de Microsoft WCF usando este método. Se puede agregar la misma opción de consulta dos veces si no es una opción de consulta de Servicios de datos de Microsoft WCF. Si se agrega una opción de consulta que ya está presente en el URI subyacente, se producirá una excepción.

La opción de consulta $select no se puede agregar a un URI de consulta mediante el método AddQueryOption(String, Object). Se recomienda usar el método Select<TSource, TResult>(IEnumerable<TSource>, Func<TSource, TResult>) de LINQ y que el cliente genere la opción de consulta $select en el URI de solicitud.

Ejemplos

El ejemplo siguiente muestra DataServiceQuery<TElement> que se utiliza con llamadas secuenciales al método AddQueryOption para devolver solamente los pedidos con un coste de transporte superior a 30 dólares y para ordenar los resultados por la fecha de transporte en orden descendente.

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

En el ejemplo siguiente se muestra cómo crear un consulta LINQ que es equivalente a la consulta anterior que utilizaba 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);
}

Vea también

Referencia

DataServiceQuery<TElement> Clase

Espacio de nombres System.Data.Services.Client