コード例 #1
0
ファイル: ODataSelector.cs プロジェクト: tiborfsk/smartface
        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);
        }
コード例 #2
0
        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();
        }
コード例 #3
0
        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);
        }