在處理 Microsoft 365 資料(例如電子郵件、行事曆、聯絡人或任務)時,並不一定需要檢索所有項目。能夠在電子郵件應用程式中篩選、排序並檢索特定資料屬性也非常有用。例如,依發件人篩選訊息、依日期排序行事曆事件或僅取得少數欄位,都能有助於保持應用程式的快速運行。
這就是 OData 查詢發揮作用的地方。Microsoft Graph 支援 OData,協助開發人員在資料傳送到應用程式之前,直接在伺服器上過濾、排序和選取資料。其結果是更快的效能、更小的有效負載,以及更具回應性的應用程式。
Aspose.Email for .NET 讓此過程變得簡單,使用其 [ODataQueryBuilder][2] 類別。本文將探討它的工作原理以及如何在 C# 中使用它構建動態且強大的 Microsoft Graph 查詢。
為什麼使用 OData 查詢?
Microsoft Graph API 提供了豐富的功能,但在手動構建查詢時可能會相當複雜。OData 參數允許在伺服器端進行篩選、排序、分頁和屬性選擇,從而減少客戶端處理。此方法通過減少資料傳輸並加快回應時間,提高了效率,使您的應用程式更快且更具可擴展性。
在支援 OData 後,您現在可以:
- 使用自訂條件篩選訊息、聯絡人或事件。
- 透過
OrderBy以升冪或降冪排序資料。 - 僅選取所需屬性以減少有效負載大小。
- 使用
Top和Skip實作分頁,適用於大型信箱。 - 使用
Expand展開相關實體(例如附件)。 - 計數並搜尋資料集以加快存取速度。
這些功能可透過全新的 [ODataQueryBuilder][2] 類別以可存取且類型安全的方式使用。
您的 .NET 元件,用於在 C# 中構建 Microsoft Graph 查詢
Aspose.Email for .NET 是一個功能強大的電子郵件處理 API,讓開發人員能直接在 C# 中操作 Microsoft 365、Exchange 和 Outlook 資料。它支援讀寫常見的電子郵件格式,如 MSG、EML、PST 和 MBOX,並與各種協議和服務整合,包括 Microsoft Graph API。
使用內建的 [ODataQueryBuilder][2],您可以在 C# 中建立動態且類型安全的 OData 查詢。這使得過濾、排序和檢索特定的郵箱資料——訊息、聯絡人或行事曆事件變得簡單,無需手動編寫複雜的查詢字串。
透過將查詢邏輯卸載至 Microsoft Graph 伺服器,Aspose.Email for .NET 可協助開發人員建立更快速、更高效且具可擴充性的應用程式,以與 Microsoft 365 資料互動。
要開始使用,請在您的 .NET 專案中安裝 Aspose.Email NuGet 套件:
Install-Package Aspose.Email
此套件包含所有滿足您需求的必要類別。
介紹 ODataQueryBuilder 類別
[ Aspose.Email.Clients.Graph.ODataQueryBuilder][2] 類別旨在簡化您撰寫 Graph 查詢的方式。您可以將其與多個 Graph 客戶端方法一起使用,包括:
ListFoldersListMessagesListContactsListCalendarItemsListAttachmentsListCategoriesListOverridesListRulesListTaskListsListTasksListNotebooks
每個都支援可選的 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] 來增強在 .NET 應用程式中處理 Microsoft Graph 資料的工作:
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] 在不載入所有資料的情況下獲取總項目數。
- 為分頁邏輯做好準備,以有效處理大型資料集。
結論
在本文中,我們學習了如何使用 Aspose.Email for .NET 庫中的 [ODataQueryBuilder][2] 類別來構建和執行 Microsoft Graph 查詢。現在,您不必手動編寫 OData 語法,而是可以直接在 C# 代碼中創建類型安全、動態且可讀性高的查詢。Aspose.Email for .NET 中引入的 OData 查詢支援使開發人員能夠構建更智能、更高效的應用程式,以與 Microsoft Graph 互動。
準備好使用 Microsoft Graph 更快、更高效地構建 .NET 應用程式了嗎?
- 下載 最新的 Aspose.Email for .NET
- 探索 更多程式碼範例於 API 文件
- 下載 免費的 30 天臨時授權 以無限制地評估此函式庫
