Quando si lavora con i dati di Microsoft 365, come email, calendari, contatti o attività, non è sempre necessario recuperare tutti gli elementi. È inoltre utile poter filtrare, ordinare e recuperare proprietà di dati specifiche nelle proprie applicazioni di posta elettronica. Ad esempio, filtrare i messaggi per mittente, ordinare gli eventi del calendario per data o recuperare solo pochi campi può aiutare a mantenere l’app veloce.

È qui che entrano in gioco le query OData. Microsoft Graph supporta OData per aiutare gli sviluppatori a filtrare, ordinare e selezionare i dati direttamente sul server prima che vengano inviati alla tua app. Il risultato è una maggiore velocità, payload più piccoli e applicazioni più reattive.

Aspose.Email for .NET rende questo processo semplice con la sua classe [ODataQueryBuilder][2]. In questo articolo, esploreremo come funziona e come è possibile usarla per creare query Microsoft Graph dinamiche e potenti in C#.

Perché usare le query OData?

Le API Microsoft Graph offrono funzionalità estese ma possono risultare complesse quando si costruiscono query manualmente. I parametri OData consentono filtraggio, ordinamento, paginazione e selezione delle proprietà lato server, riducendo al minimo l’elaborazione lato client. Questo approccio migliora l’efficienza riducendo il trasferimento dei dati e accelerando i tempi di risposta, rendendo le tue applicazioni più veloci e scalabili.

Con il supporto OData, ora puoi:

  • Filtra messaggi, contatti o eventi usando condizioni personalizzate.
  • Ordina i dati tramite OrderBy per ordine ascendente o discendente.
  • Seleziona solo le proprietà necessarie per ridurre la dimensione del payload.
  • Implementa il paging usando Top e Skip, ideale per cassette postali di grandi dimensioni.
  • Espandi le entità correlate (ad esempio, allegati) con Expand.
  • Conta e ricerca i set di dati per un accesso più rapido.

Queste funzionalità sono accessibili e tipizzate in modo sicuro tramite la nuova classe [ODataQueryBuilder][2].

Il tuo componente .NET per creare query Microsoft Graph in C#

Aspose.Email for .NET è una potente API per l’elaborazione delle email che consente agli sviluppatori di lavorare direttamente con i dati di Microsoft 365, Exchange e Outlook in C#. Supporta la lettura e la scrittura di formati email popolari, come MSG, EML, PST e MBOX, e si integra con vari protocolli e servizi, incluso l’API Microsoft Graph.

Utilizzando il [ODataQueryBuilder][2] integrato, è possibile creare query OData dinamiche e type‑safe in C#. Questo rende più semplice filtrare, ordinare e recuperare dati specifici della casella di posta - messaggi, contatti o eventi del calendario senza scrivere manualmente stringhe di query complesse.

Spostando la logica delle query sul server Microsoft Graph, Aspose.Email for .NET aiuta gli sviluppatori a creare applicazioni più rapide, più efficienti e scalabili che interagiscono con i dati di Microsoft 365.

Per iniziare, installa il pacchetto NuGet Aspose.Email nel tuo progetto .NET:

Install-Package Aspose.Email

Questo pacchetto include tutte le classi necessarie per soddisfare le tue esigenze.

Introduzione alla classe ODataQueryBuilder

La classe [Aspose.Email.Clients.Graph.ODataQueryBuilder][2] è stata creata per semplificare il modo in cui scrivi le query Graph. Puoi usarla con diversi metodi client di Graph, tra cui:

  • ListFolders
  • ListMessages
  • ListContacts
  • ListCalendarItems
  • ListAttachments
  • ListCategories
  • ListOverrides
  • ListRules
  • ListTaskLists
  • ListTasks
  • ListNotebooks

Ogni chiamata supporta un parametro opzionale ODataQueryBuilder per filtraggio avanzato, ordinamento, paginazione e selezione, direttamente all’interno delle tue richieste Graph.

Esempio pratico: filtrare e ordinare i dati della casella di posta

Il seguente esempio di codice dimostra sia scenari di query di base che avanzati. Mostra l’ordinamento delle cartelle e il filtraggio avanzato dei messaggi, illustrando i parametri OData per l’ordine, i criteri, la paginazione, i campi selezionati e l’espansione delle entità correlate.

var accessParameters = Settings.User1;
var provider = new AzureConfidentialTokenProvider(
    accessParameters.TenantId,
    accessParameters.ClientId,
    accessParameters.ClientSecret);

var client = GraphClient.GetClient(provider, accessParameters.TenantId);
client.Resource = Aspose.Email.Clients.Graph.ResourceType.Users;
client.ResourceId = accessParameters.Username;
client.EndPoint = "https://graph.microsoft.com";

// List folders sorted by name
var builder = new ODataQueryBuilder { OrderBy = "name asc" };
var folders = client.ListFolders(builder);
foreach (var folder in folders)
    Console.WriteLine(folder.DisplayName);

// Advanced message filtering
var folderId = folders.Find(x => x.DisplayName == "Inbox").ItemId;
builder = new ODataQueryBuilder {
    Filter = "startswith(name,'A')",
    OrderBy = "name asc",
    Top = 10,
    Skip = 5,
    Select = new[] { "name", "age" },
    Expand = new[] { "children", "parents" },
    Count = true,
    Search = "\"John Doe\"",
    Format = "json"
};
var msgs = client.ListMessages(folderId, builder);
foreach (var msg in msgs)
    Console.WriteLine(msg.Subject);

Scenari del mondo reale

Considera alcune situazioni pratiche in cui il [ODataQueryBuilder][2] può essere applicato per migliorare il lavoro con i dati di Microsoft Graph nelle tue applicazioni .NET:

1. Elenchi Cartelle UI
Ordina le cartelle alfabeticamente [OrderBy][3] = "name asc" per un’interfaccia utente pulita.

2. Filtraggio personalizzato
Usa [Filter][4] per trovare i messaggi da mittenti specifici o con determinati oggetti.

3. Paginazione di cassette postali di grandi dimensioni
Combina [Top][5] e [Skip][6] per suddividere le cassette postali enormi in risultati gestibili.

4. Seleziona Proprietà Specifiche
Recupera solo i campi di cui hai bisogno con [Select][7] per ridurre al minimo il payload e migliorare le prestazioni.

5. Includi Dati Correlati
Usa [Expand][8] per includere allegati, categorie o discussioni in un’unica query.

Suggerimenti per un utilizzo efficace di OData

  • Conferma che il tuo GraphClient specifichi correttamente Resource, ResourceId e EndPoint.
  • Scegli un provider di autenticazione appropriato, come [AzureConfidentialTokenProvider][13].
  • Combina [Filter][4], [Select][7], [OrderBy][3] e [Top][5] per query ottimali.
  • Utilizza [Count][14] per ottenere il numero totale di elementi senza caricare tutti i dati.
  • Prepara la logica di paginazione per gestire grandi set di dati in modo efficiente.

Conclusione

In questo articolo, abbiamo imparato come utilizzare la classe [ODataQueryBuilder][2] della libreria Aspose.Email for .NET per creare ed eseguire query Microsoft Graph. Invece di comporre manualmente la sintassi OData, ora è possibile creare query tipizzate, dinamiche e leggibili direttamente nel tuo codice C#. L’introduzione del supporto alle query OData in Aspose.Email for .NET consente agli sviluppatori di creare applicazioni più intelligenti ed efficienti che interagiscono con Microsoft Graph.

Pronto a creare applicazioni .NET più rapide ed efficienti con Microsoft Graph?

Vedi anche