我正在使用Exchange Web服务尝试获取所有未完成的Outlook任务的列表。
我有一个ExchangeService实例,并尝试查找所有未完成的任务:
SearchFilter searchFilter = new SearchFilter.IsNotEqualTo(TaskSchema.Status, TaskStatus.NotStarted);
FindItemsResults<Item> tasks = service.FindItems(WellKnownFolderName.Tasks, searchFilter, view);
但是,在最后一行,我得到一个“ServiceResponseException:指定的值对于属性无效”。这对我来说似乎很奇怪,因为the EWS documentation explicitly states Task.Status应该是TaskStatus枚举值之一。创建一个与字符串值进行比较的SearchFilter不会导致异常,但我没有尝试任何其他枚举选项来查看它们是否给出相同的行为。
答案 0 :(得分:3)
我可以使用Exchange 2007的ExtendedPropertyDefinition执行此操作。
我正在使用PidLidTaskComplete Canonical Property。
可用的命名属性的完整列表here。
//Create the extended property definition.
ExtendedPropertyDefinition taskCompleteProp = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.Task, 0x0000811C, MapiPropertyType.Boolean);
//Create the search filter.
SearchFilter.IsEqualTo filter = new SearchFilter.IsEqualTo(taskCompleteProp, false);
//Get the tasks.
FindItemsResults<Item> tasks = service.FindItems(WellKnownFolderName.Tasks, filter, new ItemView(50));
答案 1 :(得分:2)
我相信你也可以在不使用任何幻数的情况下实现这一目标:
var view = new ItemView(20);
var query = new SearchFilter.IsNotEqualTo(TaskSchema.IsComplete, true);
var results = exchangeService.FindItems(WellKnownFolderName.Tasks, query, view);
这适用于某些版本的交换:)