public virtual IEnumerable Execute(string condition, string expandProperty, string linq, string linqSelectExpression) { if (DefaultQuery.Context.BaseUri == null) { throw new ProcessingException($"API url was not set."); } DataServiceQuery <TEntity> query = DefaultQuery; if (!string.IsNullOrEmpty(condition)) { query = Where(query, condition); } if (!string.IsNullOrEmpty(expandProperty)) { query = ExpandQuery(query, expandProperty); } var task = Task.Run(async() => { var getAllPagesAsync = query.GetType().GetMethods() .Single(m => m.Name == nameof(query.GetAllPagesAsync)); var res = await(dynamic) getAllPagesAsync.Invoke(query, null); return(res); }); IEnumerable entities = task.GetAwaiter().GetResult(); entities = LocalQuery <TEntity>(linq, linqSelectExpression, entities); return(entities); }
private async Task PrintQuery(DataServiceQuery query) { Console.WriteLine(Entity); var list = await query.ExecuteAsync(); var elementType = query.GetType().GenericTypeArguments[0]; var props = Columns.Select(k => Info.GetProperty(elementType, k)) .Where(k => k != null); var table = new ConsoleTable(props.Select(k => k.Name).ToArray()); foreach (var wk in list) { var line = props.Select(k => k.GetValue(wk)); table.AddRow(line.ToArray()); } table.Write(); }
public static DataServiceQuery Expand(this DataServiceQuery query, string path) { MethodInfo method = query.GetType().GetMethod("Expand", new[] { typeof(string) }); return(method.Invoke(query, new object[] { path }) as DataServiceQuery); }