使用 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 中为每个用户存储一个音频文件?