C# 如何在Outlook.MailItems不属于advancedSearch';s结果

C# 如何在Outlook.MailItems不属于advancedSearch';s结果,c#,.net,vb.net,outlook,add-in,C#,.net,Vb.net,Outlook,Add In,背景: 目前我正在搜索属于advancedSearch()查询结果集的邮件项 Outlook.Search-advancedSearch=Application.advancedSearch(范围、筛选器、true、advancedSearch标记); Outlook.Results advancedSearchResults=advancedSearch.Results; foreach(advancedSearchResults中的邮件项) { Show(item.Subject.ToSt

背景:

目前我正在搜索属于advancedSearch()查询结果集的邮件项

Outlook.Search-advancedSearch=Application.advancedSearch(范围、筛选器、true、advancedSearch标记);
Outlook.Results advancedSearchResults=advancedSearch.Results;
foreach(advancedSearchResults中的邮件项)
{
Show(item.Subject.ToString());
}
问题陈述:

我想搜索并循环不满足此advancedSearch()方法的“筛选器”的邮件项。有什么办法吗

如果没有,有什么办法吗?(使用Find()或Restrict()) 我的具体情况是搜索,如果每个邮件项的UserProperty是“ABC”或不是。(不是它的值,而是UserProperty的名称)

在这里,我使用:

字符串过滤器=”http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-0000000000 46}类似\'%“+propertyName+“%\”;

谢谢

首先,在搜索前加上“NOT”。其次,添加“is null”或“is not null”子句-您的搜索查询假设每个项上都存在该属性。如果没有,则结果未定义。

您需要什么?c#代码还是vb.net代码?@Simo任何东西都可以,因为我只需要知道技术和语法就可以找到。你是说像这样的东西吗?(尚未测试)字符串筛选器=string.Format(“{00020329-0000-0000-C000-0000000000 46}>=”{0}',propertyName);否,“{0B63E350-9CCC-11D0-BCDB-00805FCCCE04}/YouPropertyName”不是空的,正如我在回答您的另一个问题时已经提到的,您无法搜索属性名称。只针对属性值。我今天测试了它&我可以搜索。完成后,将使用工作代码段更新其他问题。我当前问题中的代码片段工作正常。我现在只想否定它。不,它不起作用,这就是为什么你有这些问题。搜索查询搜索GUID为{00020329-0000-0000-C000-0000000000 46}且没有包含propertyName变量值的名称(这没有意义)的命名属性。