Ejemplo n.º 1
0
 public IEnumerable <KeyValuePair <string, string> > Build(OdataQueryOptions <TModel> options)
 {
     if (options.WhereExpressions.Any())
     {
         var filter = string.Join(" and ", options.WhereExpressions
                                  .Select(x => LambdaFilterParser.Parse(x))
                                  .Where(x => !string.IsNullOrEmpty(x))
                                  );
         yield return(new KeyValuePair <string, string>("$filter", filter));
     }
     if (options.OrderOptions.Any())
     {
         var orders = options.OrderOptions.Select(x =>
                                                  $"{(string.Join("/", ExpressionHelpers.GetMemberName(x.Expression)))} {x.OrderDirection.ToString().ToLowerInvariant()}");
         yield return(new KeyValuePair <string, string>("$orderby", string.Join(",", orders)));
     }
     if (options.Skip.HasValue)
     {
         yield return(new KeyValuePair <string, string>("$skip", options.Skip.Value.ToString()));
     }
     if (options.Take.HasValue)
     {
         yield return(new KeyValuePair <string, string>("$top", options.Take.Value.ToString()));
     }
     if (options.Take.HasValue || options.Skip.HasValue)
     {
         yield return(new KeyValuePair <string, string>("$count", "true"));
     }
     if (options.CustomQueryParamsFactory != null)
     {
         var custom = options.CustomQueryParamsFactory();
         foreach (var kv in custom)
         {
             yield return(kv);
         }
     }
 }
Ejemplo n.º 2
0
 public OdataClient(HttpClient client, string apiUri, OdataQueryOptions <TModel, TResult> queryOptions = null) : base(client, apiUri, queryOptions)
 {
     QueryOptions = queryOptions;
 }