/// <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
public ODataService(IODataParser oDataParser, IODataParametersValidator oDataParamsValidator) { this.oDataParser = oDataParser; this.oDataParamsValidator = oDataParamsValidator; }
/// <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); }