在作为列表的属性上使用SearchFilter

时间:2012-06-13 16:30:03

标签: exchangewebservices

我目前正在使用Outlook 2010上的EWS。我正在尝试根据类别字段查看用户的联系人。我基本上想要返回其类别字段包含特定子字符串的每个联系人。以下是一个例子:

ExchangeService service = new ExchangeService
{
    Credentials = new WebCredentials(user, password, domain),
    Url = new Uri(exchangeUrl),
};
string searchString = "abc";
SearchFilter filter = new SearchFilter.ContainsSubstring(ItemSchema.Categories, searchString);
ItemView view = new ItemView(200);
Mailbox mailbox = new Mailbox("blah@blah.com");
FolderId folderId = new FolderId(WellKnownFolderName.Contacts, mailbox);
FindItemsResults<Item> results = service.FindItems(folderId, filter, view);

这当然失败了,因为类别字段现在令人烦恼地是StringList而不是普通字符串。我们所有的用户联系人只有一个与之关联的类别。有没有办法只通过第一个类别 上的比较运行才能使SearchFilter工作?

请注意:由于我无法控制的原因,我cannot use AQS strings。他们根本不是一个选择。我必须使用SearchFilter个对象(或其他一些机制来过滤结果)。

1 个答案:

答案 0 :(得分:1)

从我看到的情况来看,您必须使用AQSExact Match。如果你也不能使用它们,那么using ItemView and paging through all messages category properties自己总是采用强制方法来实现包含实现。