Freigeben über


DataServiceQuery<TElement>.AddQueryOption-Methode

Erstellt eine neue DataServiceQuery<TElement> mit der Abfrageoption, die im von der zurückgegebenen Abfrage generierten URI festgelegt ist.

Namespace:  System.Data.Services.Client
Assembly:  Microsoft.Data.Services.Client (in Microsoft.Data.Services.Client.dll)

Syntax

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

Parameter

  • name
    Typ: System.String
    Der Zeichenfolgenwert, der den Namen der hinzuzufügenden Abfragezeichenfolgenoption enthält.
  • value
    Typ: System.Object
    Das Objekt, das den Wert der Abfragezeichenfolgenoption enthält.

Rückgabewert

Typ: System.Data.Services.Client.DataServiceQuery<TElement>
Eine neue Abfrage, die die angeforderte Abfrageoption enthält, die an den URI der angegebenen Abfrage angefügt wurde.

Hinweise

Dem resultierenden URI werden die Abfrageoptionen mit der ?name=value&name2=value2…-Syntax hinzugefügt, wobei dem Parameter name der Name direkt zugeordnet wird. value wird durch Aufrufen von ToString für den Parameter value ermittelt. Der name beginnt mit $.

Nicht-WCF Data Services-Syntax beginnt nicht mit $. Mit dieser Methode können Nicht-WCF Data Services-Abfrageoptionen hinzugefügt werden. Sie können die gleiche Abfrageoption zweimal hinzuzufügen, wenn die Option keine WCF Data Services-Abfrageoption ist. Wenn eine Abfrageoption hinzugefügt wird, die bereits im zu Grunde liegenden URI vorhanden ist, wird eine Ausnahme ausgelöst.

Die $select-Abfrageoption kann einem Abfrage-URI nicht mit der AddQueryOption(String, Object)-Methode hinzugefügt werden. Es wird empfohlen, die LINQ-Methode Select<TSource, TResult>(IEnumerable<TSource>, Func<TSource, TResult>) zu verwenden, wobei der Client die Abfrageoption $select im Anforderungs-URI erstellt.

Beispiele

Im folgenden Beispiel wird eine DataServiceQuery<TElement> gezeigt, die mit sequenziellen AddQueryOption-Methodenaufrufen verwendet wird, um nur Bestellungen mit Frachtkosten von mehr als 30 Dollar zurückzugeben und die Ergebnisse nach dem Lieferdatum in absteigender Reihenfolge zu sortieren.

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

Im folgenden Beispiel wird gezeigt, wie eine LINQ-Abfrage verfasst wird, die der vorherigen Abfrage entspricht, in der AddQueryOption verwendet wurde.

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

Siehe auch

Verweis

DataServiceQuery<TElement> Klasse

System.Data.Services.Client-Namespace