예제 #1
0
        /// <summary>
        /// Gets the taxon items.
        /// </summary>
        /// <typeparam name="T">Generic type parameter.</typeparam>
        /// <param name="taxon">The taxon.</param>
        /// <param name="skip">(Optional) The skip.</param>
        /// <param name="take">(Optional) The take.</param>
        /// <returns>
        /// An enumerator that allows foreach to be used to process the taxon items in this collection.
        /// </returns>
        public static IEnumerable <T> GetItems <T>(this ITaxon taxon, int skip = 0, int take = 999)
        {
            // get the manager for the items, e.g. NewsManager
            var manager = ManagerBase.GetMappedManager(typeof(T));

            // get the base content database provider
            var contentProvider = manager.Provider as ContentDataProviderBase;

            // get a taxonomy property descriptor for this item type and taxon
            var prop = TaxonomyManager.GetPropertyDescriptor(typeof(T), taxon);

            int?totalCount = 0;
            // use the GetItemsByTaxon() method to return IEnumerable of items.
            var items = contentProvider.GetItemsByTaxon(taxon.Id,
                                                        prop.MetaField.IsSingleTaxon,
                                                        prop.Name,
                                                        typeof(T),
                                                        string.Empty, // filter
                                                        string.Empty, // order by
                                                        skip,         // skip
                                                        take,         // take
                                                        ref totalCount);

            return(items as IEnumerable <T>);
        }