次の方法で共有


FindItemType クラス

定義

クラスは FindItemType 、メールボックス内のアイテムを検索するためのクエリを表します。

public ref class FindItemType : ExchangeWebServices::BaseRequestType
public class FindItemType : ExchangeWebServices.BaseRequestType
Public Class FindItemType
Inherits BaseRequestType
継承
FindItemType

次のコード例は、次の結果を返すアイテム検索クエリを示しています。

  1. 結果セットの先頭から始まり、結果セットから最大 10 個のエントリを返すインデックス付きクエリ結果。
  2. 次の処理を行うグループ化された検索。
  3. IsMeeting プロパティと Importance プロパティに加えて、AllProperties 図形に対して定義されているすべてのプロパティ。 FindItem 操作では、AllProperties 図形は GetItem 操作とは異なっています。
  4. 予定表の既定のフォルダーにある項目。
  5. 現在の時刻より後の開始時刻を持つ項目のみ。
  6. Subject プロパティで並べ替えられた項目。
  7. 検索されたフォルダーの最上位にのみ見つかった項目。
static void FindItem()
{
    // Create the service binding.
    ExchangeServiceBinding esb = new ExchangeServiceBinding();
    esb.Credentials = new NetworkCredential("username", "password", "domain");
    esb.Url = @"https://ExchangeServer/EWS/Exchange.asmx";

    // Form the FindItem request.
    FindItemType <span class="label">findItemRequest</span> = new <span class="label">FindItemType</span>();

    // Define the paging scheme for the result set.
    IndexedPageViewType ipvt = new IndexedPageViewType();
    ipvt.BasePoint = IndexBasePointType.Beginning;
    ipvt.MaxEntriesReturned = 10;
    ipvt.MaxEntriesReturnedSpecified = true;
    ipvt.Offset = 0;
    // Add the paging scheme to the request.
<span class="label">findItemRequest</span>.Item = ipvt;

    // Define the grouping scheme for the result set.
    GroupByType group = new GroupByType();
    // Define the property that is used to determine the order of groups of items in a group.
    AggregateOnType aggregate = new AggregateOnType();
    PathToUnindexedFieldType subject = new PathToUnindexedFieldType();
    subject.FieldURI = UnindexedFieldURIType.itemSubject;
    aggregate.Item = subject;
    aggregate.Aggregate = AggregateType.Minimum;
    group.AggregateOn = aggregate;
    // Define the property that is used to group items.
    PathToUnindexedFieldType importance = new PathToUnindexedFieldType();
    importance.FieldURI = UnindexedFieldURIType.itemImportance;
    group.Item = importance;
    // Define how the groups are ordered in the response.
    group.Order = SortDirectionType.Descending;
    // Add the grouping scheme to the request.
<span class="label">findItemRequest</span>.Item1 = group;

    // Define the item properties that are returned in the response.
    ItemResponseShapeType itemProperties = new ItemResponseShapeType();
    // Use the Default shape for the response.            
    itemProperties.BaseShape = DefaultShapeNamesType.Default;
    // Add more properties to the request.
    PathToUnindexedFieldType addIsMeeting = new PathToUnindexedFieldType();
    PathToUnindexedFieldType addImportance = new PathToUnindexedFieldType();
    addIsMeeting.FieldURI = UnindexedFieldURIType.calendarIsMeeting;
    addImportance.FieldURI = UnindexedFieldURIType.itemImportance;
    itemProperties.AdditionalProperties = new PathToUnindexedFieldType[2];
    itemProperties.AdditionalProperties[0] = addIsMeeting;
    itemProperties.AdditionalProperties[1] = addImportance;
    // Add the properties shape to the request.
<span class="label">findItemRequest</span>.ItemShape = itemProperties;

    // Identify which folders to search.
    DistinguishedFolderIdType[] folderIDArray = new DistinguishedFolderIdType[1];
    folderIDArray[0] = new DistinguishedFolderIdType();
    folderIDArray[0].Id = DistinguishedFolderIdNameType.calendar;
    // Add folders to the request.
<span class="label">findItemRequest</span>.ParentFolderIds = folderIDArray;

    // Create a restriction for the result set.
    RestrictionType restriction = new RestrictionType();
    PathToUnindexedFieldType pteft = new PathToUnindexedFieldType();
    pteft.FieldURI = UnindexedFieldURIType.calendarStart;
    FieldURIOrConstantType fieldURIORConstant = new FieldURIOrConstantType();
    fieldURIORConstant.Item = new ConstantValueType();
    (fieldURIORConstant.Item as ConstantValueType).Value = DateTime.Now.ToString();
    IsGreaterThanType isGreaterThan = new IsGreaterThanType();
    isGreaterThan.Item = pteft;
    isGreaterThan.FieldURIOrConstant = fieldURIORConstant;
    restriction.Item = isGreaterThan;
<span class="label">findItemRequest</span>.Restriction = restriction;

    // Define the sort order of items.
    FieldOrderType[] fieldsOrder = new FieldOrderType[1];
    fieldsOrder[0] = new FieldOrderType();
    PathToUnindexedFieldType subjectOrder = new PathToUnindexedFieldType();
    subjectOrder.FieldURI = UnindexedFieldURIType.itemSubject;
    fieldsOrder[0].Item = subjectOrder;
    fieldsOrder[0].Order = SortDirectionType.Ascending;
<span class="label">findItemRequest</span>.SortOrder = fieldsOrder;

    // Define the traversal type.
<span class="label">findItemRequest</span>.Traversal = ItemQueryTraversalType.Shallow;

    try
    {
        // Send the FindItem request and get the response.
        FindItemResponseType findItemResponse = esb.FindItem(<span class="label">findItemRequest</span>);

        // Access the response message.
        ArrayOfResponseMessagesType responseMessages = findItemResponse.ResponseMessages;
        ResponseMessageType responseMessage = responseMessages.Items[0];

        if (responseMessage is FindItemResponseMessageType)
        {
            FindItemResponseMessageType firmt = (responseMessage as FindItemResponseMessageType);
            FindItemParentType fipt = firmt.RootFolder;
            object obj = fipt.Item;

            // Determine whether the FindItem response contains grouped items.
            if (obj is ArrayOfGroupedItemsType)
            {
                ArrayOfGroupedItemsType groupedItems = (obj as ArrayOfGroupedItemsType);
                //TODO: Write code to handle grouped items.
            }

            // FindItem contains an array of items.
            else if (obj is ArrayOfRealItemsType)
            {
                ArrayOfRealItemsType items = (obj as ArrayOfRealItemsType);
                //TODO: Write code to handle items.
            }
        }
    }
    catch (Exception e)
    {
        Console.WriteLine(e.Message);
    }
}

注釈

クラスには FindItemType 、メールボックスのクエリを実行するための多くのオプションが用意されています。 FindItem クエリは、一連のフォルダーの浅い検索と論理的に削除された検索に限定されますが、検索結果セットの複雑な検索式とビューを作成するための多くのオプションを使用できます。 FindItemTypeクラスには、検索のパラメーターを設定するために使用されるプロパティのセットが含まれています。 次の表は、クエリの構築に使用されるさまざまなパラメーターを記述するプロパティの一覧です。

クエリの構築に使用されるプロパティ

Item 結果セットのページング メカニズムを識別します。 このプロパティは省略可能です。
Item1 結果セットでデータをグループ化する方法を識別します。 このプロパティは省略可能です。 このプロパティが設定されていない場合、グループ化は適用されません。
ItemShape 結果セット内の項目に対して返される項目プロパティを識別します。
ParentFolderIds 検索するフォルダーを識別します。
Restriction 結果セットで返される項目のフィルターを定義するパラメーターのセットを識別します。 このプロパティは省略可能です。
SortOrder 結果セットで項目を並べ替える方法を識別します。 このプロパティは省略可能です。
Traversal フォルダーでの検索の実行方法を識別します。

FindItem クエリは、頻繁に変更され、フォルダー構造のディープ トラバーサルを必要としないクエリに使用する必要があります。 特定の検索が定期的に実行される場合は、検索用の検索フォルダーを作成する方が適切な場合があります。 検索フォルダーは、フォルダー構造のディープ トラバーサルを実行することもできます。

重要: 検索フォルダーは Exchange Server 2007 データベースで実行されるため、Exchange サーバーを実行しているコンピューターのパフォーマンスに影響しますが、FindItem クエリは Exchange サーバーがクエリを受信した場合にのみパフォーマンスに影響します。

FindItem クエリは、クライアント アプリケーションに必要な情報の多くを提供します。 基本的には、項目の概要を返します。 FindItem は、ストリーミング可能なプロパティの最初の 512 バイトのみを返します。 Unicode の場合は、Null 終了の Unicode 文字列を使用して最初の 255 文字を返します。

: FindItem は、メッセージ本文、添付ファイル、または受信者リストを返しません。

を使用して GetItemType 、特定の項目の詳細を取得します。 GetItem は、FindItem よりも多くのプロパティを返します。 詳細情報が必要な場合、クライアント アプリケーションは FindItem 呼び出しを実行し、GetItem 呼び出しで項目識別子を使用して、FindItem 呼び出しで使用できないプロパティを取得する必要があります。

次の表は、FindItem 呼び出しと GetItem 呼び出しの両方で返されるプロパティの一覧です。

FindItem 呼び出しと GetItem 呼び出しで返されるプロパティ

ConversationIndexConversationTopicCulture
DateTimeCreatedDateTimeReceivedDateTimeSent
DisplayCcDisplayTo送信元
HasAttachmentsImportanceInReplyTo
InternetMessageIdIsDeliveryReceiptRequestedIsDraft
IsFromMeIsReadIsReadReceiptRequested
IsResendIsResponseRequestedIsSubmitted
IsUnmodifiedItemClassItemId
ParentFolderId関連情報ReminderDueBy
ReminderIsSetReminderMinutesBeforeStartSender
SensitivitySize件名

: Sender プロパティは FindItem 呼び出しと GetItem 呼び出しの両方で返されますが、FindItem 呼び出しでは DisplayName (文字列) のみが返されます。 DisplayName (string)、EmailAddress (NonEmptyStringType)、RoutingType (EmailAddress) が GetItem 呼び出しによって返されます。

Itemプロパティと Item1 プロパティは、プロキシ生成プロセスと XML スキーマ選択要素の処理方法によって作成されます。 プロパティは Item 、 クラスを拡張する オブジェクトで設定されます BasePagingType 。 このプロパティは、応答で返されるビューの種類を示します。 プロパティは Item1 、 クラスを拡張する オブジェクトで設定されます BaseGroupByType 。 このプロパティは、応答で結果セット内の項目をグループ化する方法について説明します。 これらのプロパティの詳細については、「XML スキーマ選択要素プロキシ成果物」を参照してください。

コンストラクター

FindItemType()

コンストラクターは FindItemType 、 クラスの新しいインスタンスを FindItemType 初期化します。

プロパティ

Item

プロパティは Item 、クエリ結果セットが応答でページングされる方法を説明するページングの種類を取得または設定します。 このプロパティは、、、FractionalPageViewTypeCalendarViewTypeまたは オブジェクトをIndexedPageViewType取得またはContactsViewType設定します。 このプロパティは省略可能です。 これは、読み取り/書き込みプロパティです。

Item1

プロパティは Item1 、クエリ結果セットを応答でグループ化する方法を説明するグループ化の種類を取得または設定します。 このプロパティは、 または オブジェクトをGroupByTypeDistinguishedGroupByType取得または設定します。 このプロパティは省略可能です。 これは、読み取り/書き込みプロパティです。

ItemShape

プロパティは ItemShape 、クエリ セットの図形を取得または設定します。 このプロパティは必須です。 これは、読み取り/書き込みプロパティです。

ParentFolderIds

プロパティは ParentFolderIds 、FindItem 操作で検索するフォルダーを取得または設定します。 このプロパティは必須です。 これは、読み取り/書き込みプロパティです。

QueryString

クラスは FindItemType 、メールボックス内のアイテムを検索するためのクエリを表します。

Restriction

プロパティは Restriction 、項目クエリを定義する検索パラメーターを取得または設定します。 このプロパティは省略可能です。 これは、読み取り/書き込みプロパティです。

SortOrder

プロパティは SortOrder 、結果セットで返される項目の並べ替え順序を取得または設定します。 このプロパティは省略可能です。 これは、読み取り/書き込みプロパティです。

Traversal

プロパティは Traversal 、フォルダー内のアイテムを検索するために使用されるトラバーサル スキームを取得または設定します。 このプロパティは必須です。 これは、読み取り/書き込みプロパティです。

適用対象