2017-09-07 3 views
0

Einige meiner Kalenderereignisse haben zwei erweiterten Eigenschaften:Filtern auf zwei erweiterte Eigenschaften mit Microsoft Graph

// 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 
    }); 
} 

In anderen Code möchte ich für diese Ereignisse filtern:

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}')"; 

Wie filtere ich für Ereignisse, die beide der oben genannten erweiterten Eigenschaften haben?

+0

Könnte mehr Erklärung verwenden. Es ist nicht klar, was deine Frage ist. –

+0

Ich möchte nach Ereignissen filtern, die zwei erweiterte Eigenschaften haben. –

+0

Es gibt nicht viel zu tun, ist einer dieser funktioniert aber ein anderer nicht? Erhalten Sie eine Fehlermeldung oder eine Art? –

Antwort

0

Diese Antwort auf diese question hat wirklich geholfen. Ich war über die Dinge komplizierter!

So:

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 '{0}T00:00' and end/dateTime le '{1}T23: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; 
} 

Der Schlüssel war einfach and zu verwenden und die zwei separaten Filter zusammen zu nähen.

Verwandte Themen