コード例 #1
0
 /// <summary> Initializes a new instance of the <see cref="ObservableSortedList{T}" /> class. </summary>
 /// <param name="comparer"> The comparer. </param>
 /// <param name="filter"> The filter. </param>
 public ObservableSortedList(IComparer <T> comparer = null, ICollectionFilter <T> filter = null)
 {
     _allItems = new List <T>();
     _items    = new List <T>();
     _comparer = comparer ?? (Comparer <T> .Default);
     Filter    = filter ?? new AllPassCollectionFilter <T>();
 }
コード例 #2
0
        public ObjectResult NotFound <TElement>(
            ICollectionFilter usedFilter,
            IPage <IApiResource> resultsPage)
            where TElement : IApiResource
        {
            var result = this.Collection <TElement>(usedFilter, resultsPage.Total, new List <IApiResource>());

            return(StatusCode(StatusCodes.Status404NotFound, result));
        }
コード例 #3
0
        public ObjectResult NotFound <TElement>(
            ICollectionFilter usedFilter,
            int totalElementsExisting)
            where TElement : IApiResource
        {
            var result = this.Collection <TElement>(usedFilter, totalElementsExisting, new List <IApiResource>());

            return(StatusCode(StatusCodes.Status404NotFound, result));
        }
コード例 #4
0
        protected ObjectResult Collection <TElement>(
            ICollectionFilter usedFilter,
            IPage <IApiResource> resultsPage)
            where TElement : IApiResource
        {
            var filterOverview = usedFilter.GetOverview();
            var view           = new CollectionView <TElement>(filterOverview, resultsPage.Total, resultsPage.Items);

            return(new ObjectResult(view));
        }
コード例 #5
0
        protected ObjectResult Collection <TElement>(
            ICollectionFilter usedFilter,
            int totalElementsExisting,
            IEnumerable <IApiResource> elementsToReturn)
            where TElement : IApiResource
        {
            var filterOverview = usedFilter.GetOverview();
            var view           = new CollectionView <TElement>(filterOverview, totalElementsExisting, elementsToReturn);

            return(new ObjectResult(view));
        }
コード例 #6
0
ファイル: ApiControllerBase.cs プロジェクト: wrzucher/Dub
        /// <summary>
        /// Performs filtering of the data collection.
        /// </summary>
        /// <typeparam name="T">Type of elements in the collection to filter.</typeparam>
        /// <param name="collection">Sequence of elements to filter.</param>
        /// <param name="filter">Filter which apply to collection.</param>
        /// <param name="sortBy">Sorting function.</param>
        /// <param name="sortAscending">Sorting direction.</param>
        /// <param name="startRow">Row from which start filtering.</param>
        /// <param name="pageSize">Count of rows in the page.</param>
        /// <returns>Collection with specific filtering rules applied.</returns>
        protected IEnumerable <T> Filter <T>(
            IQueryable <T> collection,
            ICollectionFilter <T> filter,
            Func <T, IComparable> sortBy,
            bool sortAscending,
            int startRow,
            int pageSize)
        {
            collection = filter.Filter(collection);
            if (sortBy == null)
            {
                return(collection);
            }

            // Perform sorting
            var sortedCollection = sortAscending
                ? collection.OrderBy(sortBy)
                : collection.OrderByDescending(sortBy);

            // Perform filtering.
            var pagedCollection = sortedCollection.Skip(startRow).Take(pageSize);

            return(pagedCollection);
        }
コード例 #7
0
 public static void SetFilter(DependencyObject obj, ICollectionFilter value)
 {
     obj.SetValue(FilterProperty, value);
 }
コード例 #8
0
        /// <summary> Initializes a new instance of the <see cref="ObservableSortedList{T}" /> class. </summary>
        /// <param name="items"> The items. </param>
        /// <param name="comparer"> The comparer. </param>
        /// <param name="filter"> The filter. </param>
        public ObservableSortedList([NotNull] IEnumerable <T> items, IComparer <T> comparer = null, ICollectionFilter <T> filter = null)
            : this(comparer, filter)
        {
            if (items == null)
            {
                throw new ArgumentNullException(nameof(items));
            }

            foreach (var item in items)
            {
                Add(item);
            }
        }