QueryExpression Class

Definition

Contains a complex query expressed in a hierarchy of expressions.

public ref class QueryExpression sealed : Microsoft::Xrm::Sdk::Query::QueryBase
[System.Runtime.Serialization.DataContract(Name="QueryExpression", Namespace="http://schemas.microsoft.com/xrm/2011/Contracts")]
public sealed class QueryExpression : Microsoft.Xrm.Sdk.Query.QueryBase
[<System.Runtime.Serialization.DataContract(Name="QueryExpression", Namespace="http://schemas.microsoft.com/xrm/2011/Contracts")>]
type QueryExpression = class
    inherit QueryBase
Public NotInheritable Class QueryExpression
Inherits QueryBase
Inheritance
QueryExpression
Attributes

Examples

        // Build the following SQL query using QueryExpression:
        //
        //      SELECT contact.fullname, contact.address1_telephone1
        //      FROM contact
        //          LEFT OUTER JOIN account
        //              ON contact.parentcustomerid = account.accountid
        //              AND
        //              account.name = 'Litware, Inc.'
        //      WHERE (contact.address1_stateorprovince = 'WA'
        //      AND
        //          contact.address1_city in ('Redmond', 'Bellevue', 'Kirkland', 'Seattle')
        //      AND
        //          contact.address1_telephone1 like '(206)%'
        //          OR
        //          contact.address1_telephone1 like '(425)%'
        //      AND
        //          DATEDIFF(DAY, contact.createdon, GETDATE()) &gt; 0
        //      AND
        //          DATEDIFF(DAY, contact.createdon, GETDATE()) &lt; 30
//      AND
//          contact.emailaddress1 Not NULL
//             )

QueryExpression query = new QueryExpression()
{
    Distinct = false,
    EntityName = Contact.EntityLogicalName,
    ColumnSet = new ColumnSet("fullname", "address1_telephone1"),
    LinkEntities = 
    {
        new LinkEntity 
        {
            JoinOperator = JoinOperator.LeftOuter,
            LinkFromAttributeName = "parentcustomerid",
            LinkFromEntityName = Contact.EntityLogicalName,
            LinkToAttributeName = "accountid",
            LinkToEntityName = Account.EntityLogicalName,
            LinkCriteria = 
            {
                Conditions = 
                {
                    new ConditionExpression("name", ConditionOperator.Equal, "Litware, Inc.")
                }
            }
        }
    },
    Criteria =
    {
        Filters = 
        {
            new FilterExpression
            {
                FilterOperator = LogicalOperator.And,
                Conditions = 
                {
                    new ConditionExpression("address1_stateorprovince", ConditionOperator.Equal, "WA"),
                    new ConditionExpression("address1_city", ConditionOperator.In, new String[] {"Redmond", "Bellevue" , "Kirkland", "Seattle"}),
                    new ConditionExpression("createdon", ConditionOperator.LastXDays, 30),
                    new ConditionExpression("emailaddress1", ConditionOperator.NotNull)
                },
            },
            new FilterExpression
            {
                FilterOperator = LogicalOperator.Or,
                Conditions =
                {
                    new ConditionExpression("address1_telephone1", ConditionOperator.Like, "(206)%"),
                    new ConditionExpression("address1_telephone1", ConditionOperator.Like, "(425)%")
                }
            }
        }
    }
};

DataCollection&lt;Entity&gt; entityCollection = _service.RetrieveMultiple(query).Entities;

// Display the results.
Console.WriteLine("List all contacts matching specified parameters");
Console.WriteLine("===============================================");
foreach (Contact contact in entityCollection)
{
    Console.WriteLine("Contact ID: {0}", contact.Id);
    Console.WriteLine("Contact Name: {0}", contact.FullName);
    Console.WriteLine("Contact Phone: {0}", contact.Address1_Telephone1);
}
Console.WriteLine("[End of Listing]");
Console.WriteLine();

Query#RetrieveMultipleConditionOperatorsQE1

Remarks

QueryExpression provides an object model to construct a query. Queries can also be created using FetchXML, a proprietary XML based query language. You can convert queries between FetchXML and QueryExpression using FetchXmlToQueryExpressionRequest and QueryExpressionToFetchXmlRequest messages. More information: Sample: Convert queries between Fetch and QueryExpression.

Constructors

QueryExpression()

Initializes a new instance of the QueryExpression class.

QueryExpression(String)

Initializes a new instance of the QueryExpression class setting the entity name.

Fields

Empty

Properties

ColumnSet

Gets or sets the columns to include.

Criteria

Gets or sets the complex condition and logical filter expressions that filter the results of the query.

Distinct

Gets or sets whether the results of the query contain duplicate entity instances.

EntityName

Gets or sets the logical name of the entity.

ExtensionData

Gets or sets the structure that contains extra data.

(Inherited from QueryBase)
LinkEntities

Gets a collection of the links between multiple entity types.

NoLock

Gets or sets a value that indicates that no shared locks are issued against the data that would prohibit other transactions from modifying the data in the records returned from the query.

Orders

Gets the order in which the entity instances are returned from the query.

PageInfo

Gets or sets the number of pages and the number of entity instances per page returned from the query.

QueryHints

Gets or sets a hint for generated SQL text which affects the query's execution.

TopCount

Gets or sets the number of rows to be returned.

Methods

Accept(IQueryExpressionVisitor)
AddLink(String, String, String)

Adds the specified link to the query expression setting the entity name to link to, the attribute name to link from and the attribute name to link to.

AddLink(String, String, String, JoinOperator)

Adds the specified link to the query expression setting the entity name to link to, the attribute name to link from and the attribute name to link to.

AddOrder(String, OrderType)

Adds the specified order expression to the query expression.

Applies to