示例#1
0
 public ODataService(IODataParser oDataParser, IODataParametersValidator oDataParamsValidator)
 {
     this.oDataParser          = oDataParser;
     this.oDataParamsValidator = oDataParamsValidator;
 }
 /// <summary>
 /// Tries to filter a IQueryable of IRESTfulItemResult with OData.
 /// </summary>
 /// <typeparam name="T">IRESTfulItemResult</typeparam>
 /// <param name="itemsList">IQueryable to be filtered.</param>
 /// <param name="oDataParamsValidator">ODataParametersValidator service.</param>
 /// <param name="oDataParser">ODataParser service.</param>
 /// <param name="httpRequest">HTTPRequest used to retrieve the route being called</param>
 /// <param name="count">Total number of items in the IQueryable. If OData $filter was used, it is the total number of items in the IQueryable after filtering.</param>
 /// <returns>Tuple of IEnumerable of items after being filtered by OData and count.</returns>
 public static async Task <(IEnumerable <T> filteredQuery, int count)> TryFilterWithODataAsync <T>(this IQueryable <T> itemsList, IODataParametersValidator oDataParamsValidator, IODataParser oDataParser, HttpRequest httpRequest) where T : class, IRESTfulItemResult
示例#3
0
 public ODataElementsValidatorSingleton(IRegexUtilizer regexUtilizer, IODataParser oDataParser)
 {
     this.regexUtilizer = regexUtilizer;
     this.oDataParser   = oDataParser;
 }
        /// <summary>
        /// Tries to filter a List of IRESTfulItemResult with OData.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="itemsList">List to be filtered.</param>
        /// <param name="oDataParamsValidator">ODataParametersValidator service.</param>
        /// <param name="oDataParser">ODataParser service.</param>
        /// <param name="httpRequest">HTTPRequest used to retrieve the route being called</param>
        /// <param name="count">Total number of items in the List. If OData $filter was used, it is the total number of items in the list after filtering.</param>
        /// <returns>IEnumerable of items after being filtered by OData.</returns>
        public static IEnumerable <T> TryFilterWithOData <T>(this List <T> itemsList, IODataParametersValidator oDataParamsValidator, IODataParser oDataParser, HttpRequest httpRequest, out int count) where T : class, IRESTfulItemResult
        {
            var isOData = httpRequest.TryParseODataParameters <T>(oDataParamsValidator, oDataParser, out ODataModel parsedOData);

            count = itemsList.Count();

            if (!isOData)
            {
                return(itemsList);
            }

            var filteredResult = itemsList.FilterWithOData(parsedOData, out count);

            return(filteredResult);
        }