protected static byte[] GetOrdinalValueOfFirstMatchingNode(MailboxSession session, SortBy[] sortOrder, FolderTreeData.RowMatchesFilterDelegate rowMatchesFilter, PropertyDefinition[] filterProperties, out bool noRowsFound) { return(FolderTreeData.GetValueFromFirstMatchingRow <byte[]>(session, sortOrder, rowMatchesFilter, filterProperties, FolderTreeDataSchema.Ordinal, out noRowsFound)); }
protected static T GetValueFromFirstMatchingRow <T>(MailboxSession session, SortBy[] sortOrder, FolderTreeData.RowMatchesFilterDelegate rowMatchesFilter, PropertyDefinition[] filterProperties, PropertyDefinition propertyToRetrieve, out bool noRowsFound) { noRowsFound = true; List <PropertyDefinition> list = new List <PropertyDefinition>(); list.AddRange(filterProperties); list.Add(propertyToRetrieve); using (Folder folder = Folder.Bind(session, DefaultFolderType.CommonViews)) { using (QueryResult queryResult = folder.ItemQuery(ItemQueryType.Associated, null, sortOrder, list)) { IStorePropertyBag[] propertyBags = queryResult.GetPropertyBags(10000); foreach (IStorePropertyBag storePropertyBag in propertyBags) { if (rowMatchesFilter(storePropertyBag)) { noRowsFound = false; return(storePropertyBag.GetValueOrDefault <T>(propertyToRetrieve, default(T))); } } } } return(default(T)); }
protected static VersionedId FindFirstRowMatchingFilter(MailboxSession session, PropertyDefinition[] filterProperties, FolderTreeData.RowMatchesFilterDelegate rowMatchesFilter) { bool flag; return(FolderTreeData.GetValueFromFirstMatchingRow <VersionedId>(session, null, rowMatchesFilter, filterProperties, ItemSchema.Id, out flag)); }