FindItemType Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
La FindItemType clase representa una consulta para buscar elementos en un buzón de correo.
public ref class FindItemType : ExchangeWebServices::BaseRequestType
public class FindItemType : ExchangeWebServices.BaseRequestType
Public Class FindItemType
Inherits BaseRequestType
- Herencia
Ejemplos
En el ejemplo de código siguiente se muestra una consulta de elemento de búsqueda que devuelve los resultados siguientes:
- Resultado de una consulta indizada que comienza al principio del conjunto de resultados y devuelve como máximo 10 entradas del conjunto de resultados.
- Una búsqueda agrupada que realiza lo siguiente:
- Todas las propiedades definidas para la forma AllProperties, además de las propiedades IsMeeting e Importance. Tenga en cuenta que la forma AllProperties es diferente en una operación FindItem que en una operación GetItem.
- Elementos que se encuentran en la carpeta predeterminada Calendario.
- Solo los elementos que tienen una hora de inicio posterior a la hora actual.
- Elementos ordenados por la propiedad Subject.
- Elementos que solo se encuentran en el nivel superior de la carpeta buscada.
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);
}
}
Comentarios
La FindItemType clase proporciona muchas opciones para consultar un buzón de correo. Aunque la consulta FindItem se limita a búsquedas superficiales y eliminadas temporalmente de un conjunto de carpetas, hay muchas opciones disponibles para crear expresiones de búsqueda complejas y vistas del conjunto de resultados de búsqueda. La FindItemType clase contiene un conjunto de propiedades que se usan para establecer los parámetros de la búsqueda. En la tabla siguiente se enumeran las propiedades que describen los distintos parámetros que se usan para construir consultas.
Propiedades que se usan para construir consultas
Item | Identifica el mecanismo de paginación del conjunto de resultados. Esta propiedad es opcional. |
Item1 | Identifica cómo se agrupan los datos en el conjunto de resultados. Esta propiedad es opcional. Si esta propiedad no está establecida, no se aplicará ninguna agrupación. |
ItemShape | Identifica qué propiedades de elemento se devuelven para los elementos del conjunto de resultados. |
ParentFolderIds | Identifica qué carpetas se buscan. |
Restriction | Identifica un conjunto de parámetros que definen un filtro en los elementos que se devuelven en el conjunto de resultados. Esta propiedad es opcional. |
SortOrder | Identifica cómo se ordenan los elementos en el conjunto de resultados. Esta propiedad es opcional. |
Traversal | Identifica cómo se realiza la búsqueda en las carpetas. |
La consulta FindItem se debe usar para las consultas que cambian con frecuencia y que no requieren un recorrido profundo de la estructura de carpetas. Si se realiza una búsqueda específica con regularidad, puede ser más adecuado crear una carpeta de búsqueda para la búsqueda. Tenga en cuenta que las carpetas de búsqueda también pueden realizar recorridos profundos de la estructura de carpetas.
Importante: Las carpetas de búsqueda se ejecutan en la base de datos de Exchange Server 2007 y, por tanto, afectan al rendimiento del equipo que ejecuta el servidor exchange, mientras que las consultas FindItem solo afectan al rendimiento cuando el servidor de Exchange recibe las consultas.
La consulta FindItem proporcionará gran parte de la información que necesita una aplicación cliente. Básicamente devuelve un resumen de un elemento. FindItem devuelve solo los primeros 512 bytes de cualquier propiedad que se pueda transmitir. Para Unicode, devuelve los primeros 255 caracteres mediante una cadena Unicode terminada en NULL.
Nota: FindItem no devuelve un cuerpo del mensaje, datos adjuntos o listas de destinatarios.
Use GetItemType para obtener los detalles de elementos específicos. GetItem devuelve más propiedades que FindItem. Si se necesita más información, una aplicación cliente debe realizar una llamada FindItem y, a continuación, usar los identificadores de elemento en una llamada a GetItem para obtener las propiedades que no están disponibles en la llamada FindItem.
En la tabla siguiente se enumeran las propiedades que se devuelven en las llamadas FindItem y GetItem.
Propiedades devueltas en llamadas FindItem y GetItem
ConversationIndex | ConversationTopic | Culture |
DateTimeCreated | DateTimeReceived | DateTimeSent |
DisplayCc | DisplayTo | From |
HasAttachments | Importancia | InReplyTo |
InternetMessageId | IsDeliveryReceiptRequested | IsDraft |
IsFromMe | IsRead | IsReadReceiptRequested |
IsResend | IsResponseRequested | IsSubmitted |
IsUnmodified | ItemClass | ItemId |
ParentFolderId | Referencias | ReminderDueBy |
ReminderIsSet | ReminderMinutesBeforeStart | Remitente |
Sensibilidad | Size | Subject |
Nota: Aunque la propiedad Sender se devuelve en las llamadas FindItem y GetItem, solo se devuelve DisplayName (cadena) en la llamada a FindItem. La llamada a GetItem devuelve DisplayName (cadena), EmailAddress (NonEmptyStringType) y RoutingType (EmailAddress).
Las Item propiedades y Item1 se crean mediante el proceso de generación de proxy y cómo controla los elementos de elección de esquema XML. La Item propiedad se establece con un objeto que extiende la BasePagingType clase . Esta propiedad describe qué tipo de vista se devolverá en la respuesta. La Item1 propiedad se establece con un objeto que extiende la BaseGroupByType clase . Esta propiedad describe cómo la respuesta agrupará los elementos del conjunto de resultados. Para obtener más información sobre estas propiedades, vea Artefactos de proxy de elemento de opción de esquema XML.
Constructores
FindItemType() |
El FindItemType constructor inicializa una nueva instancia de la FindItemType clase . |
Propiedades
Item |
La Item propiedad obtiene o establece el tipo de paginación que describe cómo se pagina el conjunto de resultados de la consulta en la respuesta. Esta propiedad obtiene o establece un IndexedPageViewTypeobjeto , FractionalPageViewType, CalendarViewTypeo ContactsViewType . Esta propiedad es opcional. Se trata de una propiedad de lectura y escritura. |
Item1 |
La Item1 propiedad obtiene o establece el tipo de agrupación que describe cómo se agrupa el conjunto de resultados de la consulta en la respuesta. Esta propiedad obtiene o establece un GroupByType objeto o DistinguishedGroupByType . Esta propiedad es opcional. Se trata de una propiedad de lectura y escritura. |
ItemShape |
La ItemShape propiedad obtiene o establece la forma del conjunto de consultas. La propiedad es obligatoria. Se trata de una propiedad de lectura y escritura. |
ParentFolderIds |
La ParentFolderIds propiedad obtiene o establece las carpetas que busca la operación FindItem. La propiedad es obligatoria. Se trata de una propiedad de lectura y escritura. |
QueryString |
La FindItemType clase representa una consulta para buscar elementos en un buzón de correo. |
Restriction |
La Restriction propiedad obtiene o establece los parámetros de búsqueda que definen una consulta de elemento. Esta propiedad es opcional. Se trata de una propiedad de lectura y escritura. |
SortOrder |
La SortOrder propiedad obtiene o establece el criterio de ordenación de los elementos devueltos en el conjunto de resultados. Esta propiedad es opcional. Se trata de una propiedad de lectura y escritura. |
Traversal |
La Traversal propiedad obtiene o establece el esquema de recorrido que se usa para buscar elementos en carpetas. La propiedad es obligatoria. Se trata de una propiedad de lectura y escritura. |