You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用C# Microsoft Graph SDK获取Office 365组的所有事件

使用Microsoft Graph C# SDK获取Office 365组的事件

Microsoft Graph C# SDK是REST API的封装,和EF Core的ORM逻辑不同,不能用Include(x => x.Events)这种方式加载关联数据,需要通过SDK提供的导航属性请求方法来获取组的事件。

直接获取指定组的所有事件

你可以直接通过Groups[groupId].Events路径发起请求,代码示例如下:

public static async Task<IEnumerable<Event>> GetGroupEvents()
{
    EnsureGraphForAppOnlyAuth();
    _ = _appClient ??
        throw new System.NullReferenceException("Graph has not been initialized for app-only auth");

    // 获取组的事件集合,可按需添加Select/Filter/OrderBy等操作
    var eventsResult = await _appClient.Groups["88d59881-7b15-4adc-a756-5d10681cf99d"]
        .Events
        .Request()
        // 可选:只请求需要的属性,减少数据传输
        .Select(e => new 
        {
            e.Subject,
            e.Start,
            e.End,
            e.Id
        })
        .GetAsync();

    return eventsResult.CurrentPage;
}

同时获取组信息和关联事件(使用$expand)

如果需要一次性获取组的基本信息和事件,可以用SDK的Expand方法(对应REST API的$expand参数),但要注意:

  • 确保你的应用权限允许同时读取组和事件数据
  • 若组内事件数量较多,可能会触发分页,需要处理后续页面

示例代码:

public static async Task<Group> GetGroupWithEvents()
{
    EnsureGraphForAppOnlyAuth();
    _ = _appClient ??
        throw new System.NullReferenceException("Graph has not been initialized for app-only auth");

    return await _appClient.Groups["88d59881-7b15-4adc-a756-5d10681cf99d"]
        .Request()
        .Select(u => new
        {
            u.DisplayName,
            u.Id,
            u.Description
        })
        // 展开events导航属性
        .Expand("events")
        .GetAsync();
}

调用这个方法后,返回的Group对象的Events属性会包含该组的事件列表(注意分页,若事件超过默认数量,需要通过NextPageRequest获取剩余数据)。

关键说明

Graph SDK的设计逻辑是显式请求关联资源,因为底层是REST API,不像EF Core那样有本地上下文跟踪关联数据。所以所有导航属性(比如Group.Events)都需要通过.Request().GetAsync()或者Expand来加载数据。

内容的提问来源于stack exchange,提问作者Bryan Dellinger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 04:36:13