/// <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); } }
public ProjectionQueryParserTest() { fieldParser = new ProjectionQueryParser(); }