Compartilhar via


Use the QueryExpression class

 

Applies To: Dynamics CRM 2013

In Microsoft Dynamics CRM 2013 and Microsoft Dynamics CRM Online, you can use the QueryExpression class to build complex queries for use with the IOrganizationService.RetrieveMultiple method or the RetrieveMultipleRequest message. You can set query parameters to the QueryExpression by using the ConditionExpression, ColumnSet, and FilterExpression classes.

The QueryExpression class lets you create complex queries. The QueryByAttribute class is designed to be a simple way to search for entities where attributes match specified values.

The following table lists the properties that you set to create a query expression.

Property

Description

EntityName

Specifies which type of entity will be retrieved. A query expression can only retrieve a collection of one entity type.

ColumnSet

Specifies the set of attributes (columns) to retrieve.

Criteria

Specifies complex conditional and logical filter expressions that filter the results of the query.

Distinct

Specifies whether the results of the query contain duplicate records.

LinkEntities

Specifies the links between multiple entity types.

Orders

Specifies the order in which the records are returned from the query.

PageInfo

Specifies the number of pages and the number of records per page returned from the query.

Record count

To find out how many records the query returned, set the ReturnTotalRecordCount property to true before executing the query. When you do this, the TotalRecordCount will be set. Otherwise, this value will be -1.

Example

The following sample shows how to use the QueryExpression class.

//  Query using ConditionExpression and FilterExpression
ConditionExpression condition1 = new ConditionExpression();
condition1.AttributeName = "lastname";
condition1.Operator = ConditionOperator.Equal;
condition1.Values.Add("Brown");            

FilterExpression filter1 = new FilterExpression();
filter1.Conditions.Add(condition1);

QueryExpression query = new QueryExpression("contact");
query.ColumnSet.AddColumns("firstname", "lastname");
query.Criteria.AddFilter(filter1);

EntityCollection result1 = _serviceProxy.RetrieveMultiple(query);
Console.WriteLine();
Console.WriteLine("Query using Query Expression with ConditionExpression and FilterExpression");
Console.WriteLine("---------------------------------------");

foreach (var a in result1.Entities)
{
    Console.WriteLine("Name: " + a.Attributes["firstname"] + " " + a.Attributes["lastname"]);
}
Console.WriteLine("---------------------------------------");

See Also

QueryExpression
Build queries with QueryExpression
Use the ColumnSet class
Use the ConditionExpression class
Use the FilterExpression class