string GetField <TP>(Expression <Func <T, TP> > fieldSelector) { ExpressionTreeTransformer transformer = new ExpressionTreeTransformer(fieldSelector); return(transformer.Transform()); }
/// <summary> /// Add an expression which represents a relation. The query will try to fetch these related objects together with the main resultset. /// </summary> /// <typeparam name="TP">The type of the property - will be automatically determined by the compiler.</typeparam> /// <param name="expr"></param> public void AddPrefetch <TP>(Expression <Func <T, TP> > expr) { ExpressionTreeTransformer transformer = new ExpressionTreeTransformer((LambdaExpression)expr); string field = transformer.Transform(); this.prefetches.Add(field); }
/// <summary> /// Implements the Linq orderby ... descending statement /// </summary> /// <typeparam name="K"></typeparam> /// <param name="keySelector"></param> /// <returns></returns> public VirtualTable <T> OrderByDescending <K>(Expression <Func <T, K> > keySelector) { ExpressionTreeTransformer transformer = new ExpressionTreeTransformer((LambdaExpression)keySelector); string field = transformer.Transform(); this.orderings.Add(new Query.DescendingOrder(field)); return(this); }
/// <summary> /// Implements the Linq where clause /// </summary> /// <param name="expr"></param> /// <returns></returns> public VirtualTable <T> Where(Expression <Func <T, bool> > expr) { // Transform the expression to NDOql ExpressionTreeTransformer transformer = new ExpressionTreeTransformer((LambdaExpression)expr); this.queryString = transformer.Transform(); this.queryParameters.Clear(); // Add the parameters collected by the transformer foreach (object o in transformer.Parameters) { this.queryParameters.Add(o); } return(this); }