Freigeben über


FindItemType Klasse

Definition

Die FindItemType -Klasse stellt eine Abfrage zum Suchen von Elementen in einem Postfach dar.

public ref class FindItemType : ExchangeWebServices::BaseRequestType
public class FindItemType : ExchangeWebServices.BaseRequestType
Public Class FindItemType
Inherits BaseRequestType
Vererbung
FindItemType

Beispiele

Das folgende Codebeispiel zeigt eine Suchelementabfrage, die die folgenden Ergebnisse zurückgibt:

  1. Ein indiziertes Abfrageergebnis, das am Anfang des Resultsets beginnt und höchstens 10 Einträge aus dem Resultset zurückgibt.
  2. Eine gruppierte Suche, die Folgendes ausführt:
  3. Alle Eigenschaften, die für das AllProperties-Shape definiert sind, zusätzlich zu den Eigenschaften IsMeeting und Importance. Beachten Sie, dass sich das AllProperties-Shape in einem FindItem-Vorgang von einem GetItem-Vorgang unterscheidet.
  4. Elemente, die im Standardordner Kalender gefunden werden.
  5. Nur Elemente mit einer Startzeit, die nach der aktuellen Uhrzeit liegt.
  6. Nach der Subject-Eigenschaft sortierte Elemente.
  7. Elemente, die nur auf der obersten Ebene des durchsuchten Ordners gefunden wurden.
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);
    }
}

Hinweise

Die FindItemType -Klasse bietet viele Optionen zum Abfragen eines Postfachs. Obwohl die FindItem-Abfrage auf flache und vorläufig gelöschte Suchvorgänge einer Gruppe von Ordnern beschränkt ist, stehen viele Optionen zum Erstellen komplexer Suchausdrücke und Ansichten des Suchergebnissatzes zur Verfügung. Die FindItemType -Klasse enthält einen Satz von Eigenschaften, die zum Festlegen der Parameter der Suche verwendet werden. In der folgenden Tabelle sind die Eigenschaften aufgeführt, die die verschiedenen Parameter beschreiben, die zum Erstellen von Abfragen verwendet werden.

Eigenschaften, die zum Erstellen von Abfragen verwendet werden

Item Identifiziert den Pagingmechanismus des Resultsets. Diese Eigenschaft ist optional.
Item1 Gibt an, wie die Daten im Resultset gruppiert werden. Diese Eigenschaft ist optional. Wenn diese Eigenschaft nicht festgelegt ist, wird keine Gruppierung angewendet.
ItemShape Gibt an, welche Elementeigenschaften für die Elemente im Resultset zurückgegeben werden.
ParentFolderIds Gibt an, welche Ordner durchsucht werden.
Restriction Identifiziert einen Satz von Parametern, die einen Filter für die Elemente definieren, die im Resultset zurückgegeben werden. Diese Eigenschaft ist optional.
SortOrder Gibt an, wie die Elemente im Resultset sortiert werden. Diese Eigenschaft ist optional.
Traversal Gibt an, wie die Suche in den Ordnern ausgeführt wird.

Die FindItem-Abfrage sollte für Abfragen verwendet werden, die sich häufig ändern und keine tiefe Durchquerung der Ordnerstruktur erfordern. Wenn eine bestimmte Suche regelmäßig durchgeführt wird, ist es möglicherweise besser geeignet, einen Suchordner für die Suche zu erstellen. Beachten Sie, dass Suchordner auch tiefe Durchläufe der Ordnerstruktur durchführen können.

Wichtig: Suchordner werden in der Exchange Server 2007-Datenbank ausgeführt und wirken sich daher auf die Leistung des Computers aus, auf dem der Exchange-Server ausgeführt wird, während FindItem-Abfragen sich nur auf die Leistung auswirken, wenn die Abfragen vom Exchange-Server empfangen werden.

Die FindItem-Abfrage stellt einen Großteil der Informationen bereit, die eine Clientanwendung benötigt. Im Grunde wird eine Zusammenfassung eines Elements zurückgegeben. FindItem gibt nur die ersten 512 Bytes einer streambaren Eigenschaft zurück. Bei Unicode werden nur die ersten 255 Zeichen mit einer Unicode-Zeichenfolge zurückgegeben, die mit null endet.

Hinweis: FindItem gibt keinen Nachrichtentext, keine Anlagen oder Empfängerlisten zurück.

Verwenden Sie GetItemType , um die Details bestimmter Elemente abzurufen. GetItem gibt mehr Eigenschaften als FindItem zurück. Wenn weitere Informationen erforderlich sind, muss eine Clientanwendung einen FindItem-Aufruf ausführen und dann die Elementbezeichner in einem GetItem-Aufruf verwenden, um die Eigenschaften abzurufen, die im FindItem-Aufruf nicht verfügbar sind.

In der folgenden Tabelle sind die Eigenschaften aufgeführt, die sowohl in den FindItem- als auch in GetItem-Aufrufen zurückgegeben werden.

Eigenschaften, die in FindItem- und GetItem-Aufrufen zurückgegeben werden

ConversationIndexConversationTopicCulture
DateTimeCreatedDateTimeReceivedDateTimeSent
DisplayCcDisplayToVon
HasAttachmentsWichtigkeitInReplyTo
InternetMessageIdIsDeliveryReceiptRequestedIsDraft
IsFromMeIsReadIsReadReceiptRequested
IsResendIsResponseRequestedIsSubmitted
IsUnmodifiedItemClassItemId
ParentFolderIdReferencesReminderDueBy
ReminderIsSetReminderMinutesBeforeStartAbsender
VertraulichkeitGrößeBetreff

Hinweis: Obwohl die Sender-Eigenschaft sowohl in FindItem- als auch in GetItem-Aufrufen zurückgegeben wird, wird nur displayName (string) im FindItem-Aufruf zurückgegeben. DisplayName (string), EmailAddress (NonEmptyStringType) und RoutingType (EmailAddress) werden vom GetItem-Aufruf zurückgegeben.

Die Item Eigenschaften und Item1 werden vom Proxygenerierungsprozess und der Verarbeitung von XML-Schemaauswahlelementen erstellt. Die Item -Eigenschaft wird mit einem -Objekt festgelegt, das die BasePagingType -Klasse erweitert. Diese Eigenschaft beschreibt, welcher Ansichtstyp in der Antwort zurückgegeben wird. Die Item1 -Eigenschaft wird mit einem -Objekt festgelegt, das die BaseGroupByType -Klasse erweitert. Diese Eigenschaft beschreibt, wie die Antwort Elemente im Resultset gruppiert. Weitere Informationen zu diesen Eigenschaften finden Sie unter Proxyartefakte für xml-Schemaauswahlelemente.

Konstruktoren

FindItemType()

Der FindItemType Konstruktor initialisiert eine neue Instanz der FindItemType -Klasse.

Eigenschaften

Item

Die Item -Eigenschaft ruft den Auslagerungstyp ab, der beschreibt, wie das Abfrageresultset in der Antwort ausgelagert wird, oder legt diesen fest. Diese Eigenschaft ruft entweder ein -, -, CalendarViewTypeFractionalPageViewType- oder ContactsViewType -IndexedPageViewTypeObjekt ab oder legt es fest. Diese Eigenschaft ist optional. Dies ist eine Lese-/Schreibeigenschaft.

Item1

Die Item1 -Eigenschaft ruft den Gruppierungstyp ab, der beschreibt, wie das Abfrageresultset in der Antwort gruppiert wird, oder legt diesen fest. Diese Eigenschaft ruft entweder ein - oder DistinguishedGroupByType -GroupByTypeObjekt ab oder legt es fest. Diese Eigenschaft ist optional. Dies ist eine Lese-/Schreibeigenschaft.

ItemShape

Die ItemShape -Eigenschaft ruft die Form des Abfragesatzes ab oder legt sie fest. Diese Eigenschaft ist erforderlich. Dies ist eine Lese-/Schreibeigenschaft.

ParentFolderIds

Die ParentFolderIds -Eigenschaft ruft die Ordner ab, die der FindItem-Vorgang durchsucht, oder legt sie fest. Diese Eigenschaft ist erforderlich. Dies ist eine Lese-/Schreibeigenschaft.

QueryString

Die FindItemType -Klasse stellt eine Abfrage zum Suchen von Elementen in einem Postfach dar.

Restriction

Die Restriction -Eigenschaft ruft die Suchparameter ab, die eine Elementabfrage definieren, oder legt diese fest. Diese Eigenschaft ist optional. Dies ist eine Lese-/Schreibeigenschaft.

SortOrder

Die SortOrder -Eigenschaft ruft die Sortierreihenfolge der im Resultset zurückgegebenen Elemente ab oder legt diese fest. Diese Eigenschaft ist optional. Dies ist eine Lese-/Schreibeigenschaft.

Traversal

Die Traversal -Eigenschaft ruft das Durchlaufschema ab, das zum Suchen nach Elementen in Ordnern verwendet wird, oder legt dieses fest. Diese Eigenschaft ist erforderlich. Dies ist eine Lese-/Schreibeigenschaft.

Gilt für: