3

現在、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);

CategoriesStringListフィールドが通常の文字列ではなく厄介なことに になっているため、これはもちろん失敗します。すべてのユーザー連絡先に関連付けられているカテゴリは 1 つだけです。最初のCategorySearchFilterで比較を実行するだけでこれを機能させる方法はありますか?

注意してください: 私の手に負えない理由により、私は AQS 文字列を使用できません。それらは単にオプションではありません。SearchFilterオブジェクト (または結果をフィルタリングする他のメカニズム) を使用する必要があります。

4

1 に答える 1

1

私が見たものから、あなたはAQSまたは完全一致を使用する必要があります。どちらも使用できない場合は、contains実装のために、すべてのメッセージカテゴリプロパティを自分で使用ItemViewしてページングするというブルートフォースアプローチが常にあります。

于 2012-06-14T15:17:49.277 に答える