Retrieve data with queries using SDK assemblies


Applies To: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

There are several ways to create queries in Microsoft Dynamics 365 (online & on-premises). You can use .NET Language-Integrated Query (LINQ) in early and late binding scenarios, you can write queries by using FetchXML, the proprietary Microsoft Dynamics 365 query language, or you can build a query by using QueryExpression and the QueryExpression class.

The following table lists the basic capabilities of each query style.

Query style



Supports all the features of QueryExpression plus aggregates and grouping. Queries are built as XML statements.


Queries are built as an object model. Supports all the features in FetchXML except for aggregates and grouping.


Queries are built using standard language, but internally uses QueryExpression so is limited to the features of QueryExpression.

Use FetchXML to create queries that return aggregates such as the sum of a value for all returned records. You can also perform “group by” operations with FetchXML.

.NET Language-Integrated Query (LINQ) uses standard query patterns. The OrganizationServiceContext class contains the LINQ query provider and is efficient at creating multiple associations.

The following messages are useful for working with queries when you want to convert between FetchXml and QueryExpression: FetchXmlToQueryExpressionRequest and QueryExpressionToFetchXmlRequest.

In this section

Build queries with LINQ (.NET language-integrated query)

Build queries with FetchXML

Build queries with QueryExpression

Query hierarchical data

Retrieve records for many-to-many relationships using intersect entities

FetchXML schema

Microsoft Dynamics 365

© 2016 Microsoft. All rights reserved. Copyright