C# EWS-如何查找所有未完成的任务?

C# EWS-如何查找所有未完成的任务?,c#,exchangewebservices,C#,Exchangewebservices,我正在使用Exchange Web服务尝试获取所有未完成的Outlook任务的列表 我有一个ExchangeService实例,并尝试查找所有未完成的任务,如下所示: SearchFilter searchFilter = new SearchFilter.IsNotEqualTo(TaskSchema.Status, TaskStatus.NotStarted); FindItemsResults<Item> tasks = service.FindItems(WellKnownF

我正在使用Exchange Web服务尝试获取所有未完成的Outlook任务的列表

我有一个ExchangeService实例,并尝试查找所有未完成的任务,如下所示:

SearchFilter searchFilter = new SearchFilter.IsNotEqualTo(TaskSchema.Status, TaskStatus.NotStarted);
FindItemsResults<Item> tasks = service.FindItems(WellKnownFolderName.Tasks, searchFilter, view);
SearchFilter SearchFilter=newsearchfilter.IsNotEqualTo(TaskSchema.Status,TaskStatus.NotStarted);
FindItemsResults tasks=service.FindItems(WellKnownFolderName.tasks、searchFilter、view);

但是,在最后一行,我得到一个“ServiceResponseException:指定的值对于属性无效”。这对我来说似乎很奇怪,因为Task.Status应该是TaskStatus枚举值之一。创建与字符串值进行比较的SearchFilter不会导致异常,但我没有尝试任何其他枚举选项以查看它们是否提供相同的行为。

我可以使用Exchange 2007的ExtendedPropertyDefinition来完成此操作

我正在使用

可用的命名属性的完整列表

//创建扩展属性定义。
ExtendedPropertyDefinition taskCompleteProp=新的ExtendedPropertyDefinition(DefaultExtendedPropertySet.Task,0x0000811C,MapPropertyType.Boolean);
//创建搜索过滤器。
SearchFilter.IsEqualTo filter=新的SearchFilter.IsEqualTo(taskcompletetrop,false);
//获取任务。
FindItemsResults tasks=service.FindItems(WellKnownFolderName.tasks,过滤器,新项目视图(50));

我相信您也可以在不使用任何神奇数字的情况下实现这一点:

var view = new ItemView(20);
var query = new SearchFilter.IsNotEqualTo(TaskSchema.IsComplete, true);
var results = exchangeService.FindItems(WellKnownFolderName.Tasks, query, view); 
这在特定版本的exchange上不起作用:)

var view = new ItemView(20);
var query = new SearchFilter.IsNotEqualTo(TaskSchema.IsComplete, true);
var results = exchangeService.FindItems(WellKnownFolderName.Tasks, query, view);