-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Ulaş Hasan edited this page Aug 21, 2025
·
1 revision
FluentDynamics.QueryBuilder is a fluent, chainable API for building and executing Microsoft Dynamics 365/Dataverse queries. It simplifies the process of creating complex QueryExpressions with a more intuitive and readable syntax.
Install via NuGet Package Manager:
Install-Package FluentDynamics.QueryBuilder
Or via .NET CLI:
dotnet add package FluentDynamics.QueryBuilder
using FluentDynamics.QueryBuilder;
using Microsoft.Xrm.Sdk;
// Create a simple query
var query = Query.For("account")
.Select("name", "accountnumber", "telephone1")
.Where(f => f.Equal("statecode", 0)) // Active accounts
.OrderBy("name");
// Execute the query
EntityCollection results = query.RetrieveMultiple(organizationService);
// Process results
foreach (var account in results.Entities)
{
Console.WriteLine($"Account: {account.GetAttributeValue<string>("name")}");
}- Fluent API - Chainable, intuitive query building
- Type-safe - Strong typing for Dynamics 365 operations
- Async Support - Full support for async/await patterns
- LINQ-like Operations - Familiar extension methods for query results
- Pagination - Built-in support for handling paged results
- Complex Joins - Easily create and configure link-entity operations
- FilterBuilder Extensions - Syntactic sugar for common conditions (Equal, In, Like, etc.)
var query = Query.For("contact")
.Select("firstname", "lastname", "emailaddress1")
.Where(f => f
.Equal("statecode", 0)
.And(a => a
.LastXDays("createdon", 30)
.IsNotNull("emailaddress1")
)
.Or(o => o
.Equal("address1_city", "Seattle")
.Contains("description", "VIP")
)
)
.OrderBy("lastname");var query = Query.For("opportunity")
.Select("name", "estimatedvalue")
.Link("account", "customerid", "accountid", JoinOperator.Inner, link => {
link.Select("name", "accountnumber")
.As("account")
.Where(f => f.Equal("statecode", 0));
});// Get specific page
var page2 = query.RetrieveMultiple(service, pageNumber: 2, pageSize: 50);
// Retrieve all pages automatically
var allResults = await query.RetrieveMultipleAllPagesAsync(service);- Query.For(entityName) - Entry point for building queries
- Select, SelectAll - Specify which fields to return
- Where - Add filtering conditions
- OrderBy, OrderByDesc - Add sorting
- Link - Create relationships between entities
- Top - Limit number of records
- RetrieveMultiple, RetrieveMultipleAsync - Execute queries
Last updated: 2025-08-21 by ulaserkus