/// <summary> /// Parse the selection clause /// </summary> /// <param name="properties">The select properties clause</param> /// <param name="source"></param> /// <param name="suffix"></param> /// <typeparam name="T"></typeparam> /// <returns></returns> public static IQueryable <T> ParseSelect <T>(string properties, IQueryable <T> source, string paramName = null) where T : class, new() { if (String.IsNullOrEmpty(properties) || properties.Equals("*")) { return(source); } LinqSelectParser parser = new LinqSelectParser(); List <SelectEntry> props = parser.ParsePropertyNames(properties.Replace(" ", String.Empty)); Expression <Func <T, T> > expression = (Expression <Func <T, T> >)parser.Process <T, T>(props, typeof(T), typeof(T), paramName); return(source.Select <T, T>(expression)); }
public IQueryable <T> Parse <T>(IFilter filter, IQueryable <T> source) where T : class, new() { //parse where clause source = LinqWhereExpressionBuilder.Parse <T>(filter.Where, source, filter.As); //parse the include clause source = LinqIncludeParser.Parse <T>(filter.With, source, filter.As); //parse the order clause source = LinqOrderParser.ParseOrder <T>(filter.OrderBy, source); //parse the pagination source = LinqLimitParser.ParseLimit <T>(filter.Skip, filter.Take, source); //parse the select clause source = LinqSelectParser.ParseSelect <T>(filter.Properties, source, filter.As); //return the result return(source); }