Esempio n. 1
0
        /// <summary>
        /// Método responsável por selecionar campos em uma coleção,
        /// obs: os campos passados no parametro fields deverão vir no modelo a seguir:
        /// campo1, campo2, Objeto(campo1, campo2), Colecao[campo1, campo2]
        /// </summary>
        /// <param name="source">fonte de dados</param>
        /// <param name="fields">campos a serem selecionados</param>
        /// <returns>retorna a fonte de dados com apenas os campos selecionados</returns>
        public static IQueryable Project(this IQueryable source, IEnumerable <string> fields)
        {
            if (source == null)
            {
                throw new ArgumentException($"{ nameof(source) }");
            }

            if (fields == null || !fields.Any())
            {
                return(source);
            }

            try
            {
                var config = new ParsingConfig {
                    AllowNewToEvaluateAnyType = true
                };
                var projection = new ProjectionQueryParser();

                return(source.Select(config, projection.ParseValues(fields.ToArray())));
            }
            catch (ParseException e)
            {
                throw new HisokaException("An error occurs when try to parse a querystring parameters in database statement", e);
            }
        }
Esempio n. 2
0
 public ProjectionQueryParserTest()
 {
     fieldParser = new ProjectionQueryParser();
 }