2 回答

TA貢獻1936條經(jīng)驗 獲得超7個贊
private IEnumerable<Appointment> GetAllSafeAppointments(Folder calendar) {
ItemView view = new ItemView(512);
view.PropertySet = new PropertySet(BasePropertySet.IdOnly);
SearchFilter filter = new SearchFilter.SearchFilterCollection(LogicalOperator.And,
new SearchFilter.IsEqualTo(SafeAppointmentFlag, true));
while(true) {
var results = SendExchangeRequest(() => calendar.FindItems(filter, view));
foreach(var r in results.OfType<Appointment>())
yield return r;
if(!results.MoreAvailable)
break;
view.Offset = results.NextPageOffset.Value;
}
}

TA貢獻1853條經(jīng)驗 獲得超9個贊
您可以批量處理請求。我為此編寫了一個通用批處理方法:
private IEnumerable<IEnumerable<T>> Batch<T>(IEnumerable<T> input, int batchSize)
{
List<T> items = new List<T>();
foreach (var item in input)
{
items.Add(item);
if (items.Count == batchSize)
{
yield return items;
items = new List<T>();
}
}
if (items.Count > 0)
{
yield return items;
}
}
現(xiàn)在,您可以使用它將您的物品分成幾批:
var batches = Batch(GetAllSafeAppointments(calendar).Select(a => a.Id), 1000);
foreach (var batch in batches)
{
service.DeleteItems(batch, DeleteMode.HardDelete, SendCancellationsMode.SendToNone, null);
}
現(xiàn)在最多一次將刪除1000個。
- 2 回答
- 0 關(guān)注
- 270 瀏覽
添加回答
舉報