# Walkthrough: Retrieving and Displaying Data From a Domain Service

\[ **This document was written for WCF Services Version 1 Service Pack 2 and might not be up to date** \
&#x20;Please see [Release Notes](https://github.com/OpenRIAServices/OpenRiaServices/releases) or [Changelog](https://github.com/OpenRIAServices/OpenRiaServices/blob/main/Changelog.md) for a list of changes since WCF RIA Services ]

This topic explains how to call the method on the domain context from a Silverlight application that corresponds to the domain service query method you want to access and then how to apply additional filtering on the results of that query to limit which entities are returned or displayed.

To retrieve data in your Silverlight application, you call the method on the domain context that corresponds to the domain service query method that you want to use. For example, a query method in the domain service named GetProducts will have a corresponding method in the domain context named GetProductsQuery. In your Silverlight application, you call GetProductsQuery and that method returns an [EntityQuery\\](https://github.com/OpenRIAServices/OpenRiaServices/tree/086ea8c8fcb115000749be6b2b01cd43bb95bf80/docs/ff422815.md) object.

In your Silverlight application, you can apply additional filtering on the query to limit which entities are returned. A query method may return every record from the products table, but you may only want to display the products that have a price value of less than 100. You can use LINQ and a subset of LINQ query operators to modify the results returned from the query. The following lists the available query operators:

* Where
* OrderBy
* ThenBy
* Skip
* Take

After you apply additional filtering, you pass the [EntityQuery\\](https://github.com/OpenRIAServices/OpenRiaServices/tree/086ea8c8fcb115000749be6b2b01cd43bb95bf80/docs/ff422815.md) object to a parameter in the [Load](https://github.com/OpenRIAServices/OpenRiaServices/tree/086ea8c8fcb115000749be6b2b01cd43bb95bf80/docs/ff423329.md) method to execute the query and get the results.

If the query has a [QueryAttribute](https://github.com/OpenRIAServices/OpenRiaServices/tree/086ea8c8fcb115000749be6b2b01cd43bb95bf80/docs/ff422090.md) with the [IsComposable](https://github.com/OpenRIAServices/OpenRiaServices/tree/086ea8c8fcb115000749be6b2b01cd43bb95bf80/docs/ff422651.md) property set to false, you cannot apply additional filtering on the query. Generally, only queries that return a single entity will have [IsComposable](https://github.com/OpenRIAServices/OpenRiaServices/tree/086ea8c8fcb115000749be6b2b01cd43bb95bf80/docs/ff422651.md) set to false.

You can bind the data to any Silverlight control that presents data. The DataGrid control can present the data in a table format.

This walkthrough describes how to retrieve and display data from a domain service. It also shows how to use the available query operator to apply additional filtering on a query.

## Prerequisites

This and the other walkthroughs presented in the Open Ria Services documentation require several prerequisite programs, such as Visual Studio and the Silverlight Developer Runtime and SDK, be installed and configured properly, in addition to Open Ria Services and the Open Ria Services Toolkit. They also require installing and configuring SQL Server 2008 R2 Express with Advanced Services and installing the AdventureWorks OLTP and LT database.

Detailed instructions for the satisfaction of each of these prerequisites are provided by the topics within the [Prerequisites for Open Ria Services](/openriaservices/gg512106.md) node. Follow the instructions provided there before proceeding with this walkthrough to ensure that you encounter as few problems as possible when working through this Open Ria Services walkthroughs.

This walkthrough assumes that you have completed the [Walkthrough: Creating a Open Ria Services Solution](/openriaservices/ee707336/ee707376.md) and continues from the application created with the procedures described there.

### To retrieve and display data from a domain service

1. Open the RIAServicesExample solution obtained from completing instructions outlined in the [Walkthrough: Creating a Open Ria Services Solution](/openriaservices/ee707336/ee707376.md) topic.
2. In your Silverlight application, open the code-behind page for MainPage.xaml.
3. Create an [EntityQuery\\](https://github.com/OpenRIAServices/OpenRiaServices/tree/086ea8c8fcb115000749be6b2b01cd43bb95bf80/docs/ff422815.md) instance by calling the GetCustomersQuery method.
4. Use the available query operations to filter the customers.
5. Pass the query object to the [Load](https://github.com/OpenRIAServices/OpenRiaServices/tree/086ea8c8fcb115000749be6b2b01cd43bb95bf80/docs/ff423329.md) method and assign the return value to the [LoadOperation\\](https://github.com/OpenRIAServices/OpenRiaServices/tree/086ea8c8fcb115000749be6b2b01cd43bb95bf80/docs/ff423147.md).

   The following code shows how to retrieve customers from the domain service. It filters customers who have phone numbers that start with 583 and orders them alphabetically by LastName. The results are displayed in a DataGrid.

   ```
   Partial Public Class MainPage
       Inherits UserControl

       Private _customerContext As New CustomerDomainContext

       Public Sub New()
           InitializeComponent()

           Dim query As EntityQuery(Of Customer)

           query = _
               From c In Me._customerContext.GetCustomersQuery() _
               Where c.Phone.StartsWith("583") _
               Order By c.LastName

           Dim loadOp = Me._customerContext.Load(query)
           CustomerGrid.ItemsSource = loadOp.Entities
       End Sub

   End Class
   ```

   ```csharp
   public partial class MainPage : UserControl
   {
       private CustomerDomainContext _customerContext = new CustomerDomainContext();

       public MainPage()
       {
           InitializeComponent();
           EntityQuery<Customer> query = 
               from c in _customerContext.GetCustomersQuery()
               where c.Phone.StartsWith("583")
               orderby c.LastName
               select c;
           LoadOperation<Customer> loadOp = this._customerContext.Load(query);
           CustomerGrid.ItemsSource = loadOp.Entities;
       }
   }
   ```

## See Also

#### Tasks

[Walkthrough: Creating a Open Ria Services Solution](/openriaservices/ee707336/ee707376.md)

[Walkthrough: Adding Query Methods](/openriaservices/ee707348/ee707373/ee707362.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://openriaservices.gitbook.io/openriaservices/gg602747/ee707367.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
