使用 Microsoft Graph 过滤两个扩展属性 [重复]

Posted

技术标签:

【中文标题】使用 Microsoft Graph 过滤两个扩展属性 [重复]【英文标题】:Filtering on two extended properties with Microsoft Graph [duplicate] 【发布时间】:2017-09-07 12:33:14 【问题描述】:

我的一些日历活动有两个扩展属性:

// Extended Properties
var extendedProperties = new EventSingleValueExtendedPropertiesCollectionPage();
extendedProperties.Add(new SingleValueLegacyExtendedProperty

    Id = _Property_TruckleSoft1,
    Value = oSettings.CalendarEntryType
);

if(!string.IsNullOrEmpty(oSettings.ScheduleType))

    extendedProperties.Add(new SingleValueLegacyExtendedProperty
    
        Id = _Property_TruckleSoft2,
        Value = oSettings.ScheduleType
    );

在其他代码中我想过滤这些事件:

string strFilterProperty = $"singleValueExtendedProperties/Any(ep: ep/id eq 'eventTypeTag' and ep/value eq 'oData.Settings.CalendarEntryType')";

string strFilterProperty = $"singleValueExtendedProperties/Any(ep: ep/id eq 'scheduleTypeTag' and ep/value eq 'oData.Settings.ScheduleType')";

那么如何过滤具有上述两种扩展属性的事件?

【问题讨论】:

可以使用更多解释。不清楚您的问题是什么。 我想过滤具有两个扩展属性的事件。 没有太多工作要做,其中一个有效,而另一个无效?您是否收到错误消息或某种错误消息? @MarcLaFleur-MSFT 我添加了一些解释。这有帮助吗? @MarcLaFleur-MSFT 已解决。 【参考方案1】:

这个question 的答案真的很有帮助。我把事情复杂化了!

所以:

public async Task<bool> DeleteExistingEvents(string idCalendar, DateTime dateStart, DateTime dateEnd, string typeEvent, string typeSchedule = "")

    try
    
        // We only want events within the desired date range
        string strFilterDateRange = String.Format("start/dateTime ge '0T00:00' and end/dateTime le '1T23:59'",
            dateStart.ToString("yyyy-MM-dd"),
            dateEnd.ToString("yyyy-MM-dd"));

        // We only want events of the right type
        string strFilterProperty = $"singleValueExtendedProperties/Any(ep: ep/id eq '_Property_TruckleSoft1' and ep/value eq 'typeEvent')";

        string strFilter = strFilterDateRange + " and " + strFilterProperty;

        if(typeSchedule != "")
        
            strFilterProperty = $"singleValueExtendedProperties/Any(ep: ep/id eq '_Property_TruckleSoft2' and ep/value eq 'typeSchedule')";
            strFilter += " and " + strFilterProperty;
        

        // Select the events (if any) and delete them
        var oEvents = await _graphClient
                                .Me
                                .Calendars[idCalendar]
                                .Events
                                .Request()
                                .Filter(strFilter)
                                .GetAsync();
        if (oEvents?.Count > 0)
        
            foreach (Event oEvent in oEvents)
            
                // Delete the event (Do I need to use the specific calendar events list?)
                await _graphClient.Me.Events[oEvent.Id].Request().DeleteAsync();
            
        
    
    catch (Exception ex)
    
        SimpleLog.Log(ex);
        return false;
    

    return true;

关键是简单地使用and 并将两个单独的过滤器拼接在一起。

【讨论】:

以上是关于使用 Microsoft Graph 过滤两个扩展属性 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何筛选使用Microsoft Graph查询的Sharepoint列表项

如何在 Microsoft Graph 上的扩展集合中进行筛选和选择?

使用 Audio Graph,了解环境噪声并在 UWP 应用中进行过滤

是否可以在 Microsoft Graph 中为每个用户存储一个音频文件?

微软受众网络大揭秘,采用最新的Microsoft Graph定向受众

MS Graph API:microsoft.graph.createLink 未创建匿名视图链接