Пример #1
0
 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));
 }
Пример #2
0
        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));
        }
Пример #3
0
        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));
        }