Exemple #1
0
        /// <summary>
        /// Filter an element list using another selector. A null selector results in no filtering; an
        /// empty string selector results in an empty list being return.
        /// </summary>
        ///
        /// <param name="elements">
        /// The sequence to filter.
        /// </param>
        /// <param name="selector">
        /// The selector.
        /// </param>
        ///
        /// <returns>
        /// The filtered list.
        /// </returns>

        protected IEnumerable <IDomObject> FilterElementsIgnoreNull(IEnumerable <IDomObject> elements, string selector)
        {
            if (selector == "")
            {
                return(Objects.EmptyEnumerable <IDomObject>());
            }
            else if (selector == null)
            {
                return(elements);
            }
            else
            {
                Selector selectors = new Selector(selector).ToFilterSelector();
                return(selectors.Filter(Document, elements));
            }
        }
Exemple #2
0
        //<summary>
        // Filter an element list using another selector. A null selector results in no filtering.
        //</summary>
        //<param name="?"></param>
        //<param name="selector"></param>
        protected IEnumerable <IDomObject> filterElementsIgnoreNull(IEnumerable <IDomObject> elements, string selector)
        {
            if (selector == "")
            {
                return(Objects.EmptyEnumerable <IDomObject>());
            }
            else if (selector == null)
            {
                return(elements);
            }
            else
            {
                SelectorChain selectors = new SelectorChain(selector);
                if (selectors.Count > 0)
                {
                    selectors.Do(item => item.TraversalType = TraversalType.Filter);
                }
                // this is kind of unfortunate but is required to keep the order correct. Probably a more efficient
                // way to do it but works fine for now

                return(elements.Intersect(selectors.Select(Document, elements)));
            }
        }