首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用c#按关键字搜索Microsoft365个日历事件的MS图API

使用c#按关键字搜索Microsoft365个日历事件的MS图API
EN

Stack Overflow用户
提问于 2021-09-07 13:05:01
回答 1查看 269关注 0票数 1

我需要按关键字进行搜索,以便只检索包含该关键字的事件。我已经得到了一个解决我的部分问题的答案(过滤主题),但我仍然需要搜索身体预览。

我试图在这段代码中添加搜索(或筛选)参数:

..。

代码语言:javascript
复制
protected override async void OnAppearing()
    {
        base.OnAppearing();

        // Get start and end of week in user's time zone
        // I replaced variables below by pure strings on QueryOption <== DOES WORKS FINE
        //var startOfWeek = GetUtcStartOfWeekInTimeZone(DateTime.Today, App.UserTimeZone);
        //var endOfWeek = startOfWeek.AddDays(30);  //Eloir: original AddDays(7)

        var queryOptions = new List<QueryOption>
        {
            //new QueryOption("$search", "BodyPreview:stackoverflow"),  <== DOES NOT WORK
            new QueryOption("startDateTime", "01/01/2020 00:00:00"),  
            new QueryOption("endDateTime", "31/12/2020 23:59:59")

        };

        var timeZoneString =
            Xamarin.Forms.Device.RuntimePlatform == Xamarin.Forms.Device.UWP ?
                App.UserTimeZone.StandardName : App.UserTimeZone.DisplayName;

        // Get the events
        var events = await App.GraphClient.Me.CalendarView.Request(queryOptions)
            .Header("Prefer", $"outlook.timezone=\"{timeZoneString}\"")
            //.Filter("BodyPreview contains 'stackoverflow'")  <== DOES NOT WORK EITHER

            .Select(e => new
            {
                e.Subject,
                e.BodyPreview,
                e.Start,
                e.End
            })
            .OrderBy("start/DateTime")
            .Top(50)
            .GetAsync();

        // Add the events to the list view
        CalendarList.ItemsSource = events.CurrentPage.ToList();

    }

..。此代码是Microsoft docs站点的一部分:用MicrosoftGraph构建Xamarin应用程序

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-07 13:25:35

CalendarView仅在指定的时间范围内提供扩展事件的列表,不支持其他筛选。

可以使用me/events端点通过dateTimesubjectbodyPreview进行筛选。

代码语言:javascript
复制
GET https://graph.microsoft.com/v1.0/me/events?$filter=start/dateTime ge '2021-09-06T08:00' and end/dateTime lt '2021-09-30T08:00' and contains(subject,'planning')

C#

代码语言:javascript
复制
await App.GraphClient.Me.Events.Request()
    .Filter("start/dateTime ge '2021-09-06T08:00' and end/dateTime lt '2021-09-30T08:00' and contains(subject,'planning')")
    .Select(e => new
        {
            e.Subject,
            e.BodyPreview,
            e.Start,
            e.End
        })
        .OrderBy("start/DateTime")
        .Top(50)
        .GetAsync();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69088746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档