При работе с данными Microsoft 365, такими как электронные письма, календари, контакты или задачи, не всегда необходимо извлекать все элементы. Также полезно иметь возможность фильтровать, сортировать и получать конкретные свойства данных в ваших почтовых приложениях. Например, фильтрация сообщений по отправителю, сортировка событий календаря по дате или получение только нескольких полей может помочь сохранить быстродействие вашего приложения.

Именно здесь на помощь приходят запросы OData. Microsoft Graph поддерживает OData, чтобы помочь разработчикам фильтровать, сортировать и выбирать данные непосредственно на сервере, ещё до того, как они будут отправлены в ваше приложение. Результатом является более высокая производительность, меньший объём передаваемых данных и более отзывчивые приложения.

Aspose.Email for .NET упрощает этот процесс с помощью класса [ODataQueryBuilder][2]. В этой статье мы рассмотрим, как он работает и как вы можете использовать его для создания динамических, мощных запросов Microsoft Graph на C#.

Почему использовать запросы OData?

Microsoft Graph API предлагает обширные возможности, но может быть сложным при ручном построении запросов. Параметры OData позволяют выполнять фильтрацию, сортировку, постраничный вывод и выбор свойств на стороне сервера, что минимизирует обработку на клиенте. Такой подход повышает эффективность за счёт снижения объёма передаваемых данных и ускорения времени отклика, делая ваши приложения быстрее и более масштабируемыми.

С поддержкой OData теперь вы можете:

  • Фильтруйте сообщения, контакты или события, используя пользовательские условия.
  • Сортируйте данные с помощью OrderBy для возрастания или убывания.
  • Выбирайте только необходимые свойства, чтобы уменьшить размер полезной нагрузки.
  • Реализуйте постраничный вывод, используя Top и Skip, что идеально подходит для больших почтовых ящиков.
  • Расширяйте связанные сущности (например, вложения) с помощью Expand.
  • Подсчитывайте и ищите наборы данных для более быстрого доступа.

Эти возможности доступны и типобезопасны через новый класс [ODataQueryBuilder][2].

Ваш компонент .NET для построения запросов Microsoft Graph на C#

Aspose.Email for .NET — мощный API для обработки электронных писем, который позволяет разработчикам работать напрямую с данными Microsoft 365, Exchange и Outlook на C#. Он поддерживает чтение и запись популярных форматов электронной почты, таких как MSG, EML, PST и MBOX, и интегрируется с различными протоколами и сервисами, включая Microsoft Graph API.

Using the built-in [ODataQueryBuilder][2], you can build dynamic and type-safe OData queries in C#. This makes it easy to filter, sort, and retrieve specific mailbox data - messages, contacts, or calendar events without writing complex query strings manually.

Перенаправляя логику запросов на сервер Microsoft Graph, Aspose.Email for .NET помогает разработчикам создавать более быстрые, эффективные и масштабируемые приложения, взаимодействующие с данными Microsoft 365.

Чтобы начать, установите пакет NuGet Aspose.Email в ваш проект .NET:

Install-Package Aspose.Email

Этот пакет включает все необходимые классы, удовлетворяющие вашим потребностям.

Введение класса ODataQueryBuilder

Класс [Aspose.Email.Clients.Graph.ODataQueryBuilder][2] создан для упрощения написания запросов Graph. Вы можете использовать его с несколькими методами клиента Graph, включая:

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

Каждый поддерживает необязательный параметр ODataQueryBuilder для расширенной фильтрации, сортировки, постраничного вывода и выбора, прямо внутри ваших запросов Graph.

Практический пример: фильтрация и сортировка данных почтового ящика

Приведенный ниже пример кода демонстрирует как базовые, так и расширенные сценарии запросов. Он показывает сортировку папок и расширенную фильтрацию сообщений, иллюстрируя параметры OData для порядка, критериев, постраничного вывода, выбранных полей и расширения связанных сущностей.

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);

Сценарии из реального мира

Рассмотрите некоторые практические ситуации, в которых [ODataQueryBuilder][2] может быть применён для улучшения работы с данными Microsoft Graph в ваших .NET приложениях:

1. UI Списки папок
Сортируйте папки в алфавитном порядке [OrderBy][3] = "name asc" для чистого пользовательского интерфейса.

2. Пользовательская фильтрация
Используйте [Filter][4], чтобы находить сообщения от конкретных отправителей или с определёнными темами.

3. Разбиение больших почтовых ящиков
Сочетайте [Top][5] и [Skip][6], чтобы разбить огромные почтовые ящики на управляемые результаты.

4. Выбор конкретных свойств
Получайте только те поля, которые вам нужны, используя [Select][7], чтобы минимизировать нагрузку и ускорить производительность.

5. Включить связанные данные
Используйте [Expand][8], чтобы включить вложения, категории или ветки в один запрос.

Советы по эффективному использованию OData

  • Убедитесь, что ваш GraphClient точно указывает Resource, ResourceId и EndPoint.
  • Выберите подходящий поставщик аутентификации, например [AzureConfidentialTokenProvider][13].
  • Скомбинируйте [Filter][4], [Select][7], [OrderBy][3] и [Top][5] для оптимальных запросов.
  • Используйте [Count][14] для получения общего количества элементов без загрузки всех данных.
  • Подготовьте логику постраничной навигации для эффективной обработки больших наборов данных.

Заключение

В этой статье мы узнали, как использовать класс [ODataQueryBuilder][2] библиотеки Aspose.Email for .NET для построения и выполнения запросов Microsoft Graph. Вместо того чтобы вручную составлять синтаксис OData, теперь вы можете создавать типобезопасные, динамические и читаемые запросы непосредственно в вашем коде C#. Введение поддержки OData‑запросов в Aspose.Email for .NET дает разработчикам возможность создавать более умные и эффективные приложения, взаимодействующие с Microsoft Graph.

Готовы создавать более быстрые и эффективные .NET‑приложения с Microsoft Graph?

См. также