Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取IEnumerable<;Microsof.Exchange.WebService.Data.ItemId>;来自使用EWS API的FindItems_C#_Exchangewebservices - Fatal编程技术网

C# 获取IEnumerable<;Microsof.Exchange.WebService.Data.ItemId>;来自使用EWS API的FindItems

C# 获取IEnumerable<;Microsof.Exchange.WebService.Data.ItemId>;来自使用EWS API的FindItems,c#,exchangewebservices,C#,Exchangewebservices,我正在编写一个C#应用程序来检查一些监控邮箱,并清除超过指定期限(例如6个月)的电子邮件 之前我打算获取项目,然后在foreach块中,依次删除每个项目。在寻找另一个问题的解决方案时,我无意中使用了DeleteItems。这需要一个System.Collection.Generic.IENumerable,但在下面的代码中,FindItems返回一个System.Collections.ObjectModel.Collecion 如何转换或获取传递给DeleteItems的正确类型 Extend

我正在编写一个C#应用程序来检查一些监控邮箱,并清除超过指定期限(例如6个月)的电子邮件

之前我打算获取项目,然后在
foreach
块中,依次删除每个项目。在寻找另一个问题的解决方案时,我无意中使用了
DeleteItems
。这需要一个
System.Collection.Generic.IENumerable
,但在下面的代码中,
FindItems
返回一个
System.Collections.ObjectModel.Collecion

如何转换或获取传递给DeleteItems的正确类型

ExtendedPropertyDefinition allFoldersType = new ExtendedPropertyDefinition(13825, MapiPropertyType.Integer);

FolderId rootFolderId = new FolderId(WellKnownFolderName.Root);
FolderView folderView = new FolderView(1000);
folderView.Traversal = FolderTraversal.Deep;

SearchFilter.SearchFilterCollection searchFilterCollection = new SearchFilter.SearchFilterCollection(LogicalOperator.And);
searchFilterCollection.Add(new SearchFilter.IsEqualTo(allFoldersType, "2"));
searchFilterCollection.Add(new SearchFilter.IsEqualTo(FolderSchema.DisplayName, "allitems"));

FindFoldersResults findFoldersResults = exchangeService.FindFolders(rootFolderId, searchFilterCollection, folderView);

Folder allItemsFolder = findFoldersResults.Folders[0];

searchFilterCollection = new SearchFilter.SearchFilterCollection(LogicalOperator.And);
searchFilterCollection.Add(new SearchFilter.IsLessThanOrEqualTo(ItemSchema.DateTimeReceived, DateTime.Now.AddMonths(-6)));
searchFilterCollection.Add(new SearchFilter.IsEqualTo(ItemSchema.ItemClass, "IPM.Note"));

var findItems = allItemsFolder.FindItems(searchFilterCollection, new ItemView(100));
var items = findItems.Items;

exchangeService.DeleteItems(findItems, DeleteMode.HardDelete, SendCancellationsMode.SendToNone, AffectedTaskOccurrence.SpecifiedOccurrenceOnly);

每个
都有一个
Id
类型的
ItemId
属性,可以使用linq访问该属性:

var findItems = allItemsFolder.FindItems(searchFilterCollection, new ItemView(100));
var itemIds = findItems.Items.Select(item => item.Id);

exchangeService.DeleteItems(itemIds, DeleteMode.HardDelete, SendCancellationsMode.SendToNone, AffectedTaskOccurrence.SpecifiedOccurrenceOnly);
项目文档:

项目Id文档: