Inheritance: SqlExpressionVisitor
		public static Expression Collate(Expression expression)
		{
			var visitor = new SqlIncludeExpressionCollator();
			var result = visitor.Visit(expression);

			foreach (var keyValue in visitor.includeExpressionsBySource)
			{
				var source = keyValue.Key;
				var expressions = keyValue.Value;

				var newSource = Expression.Call(MethodInfoFastRef.QueryableExtensionsIncludeManyMethod.MakeGenericMethod(source.Type.GetSequenceElementType()), source, Expression.NewArrayInit(typeof(LambdaExpression), expressions));

				result = SqlExpressionReplacer.Replace(result, source, newSource);
			}
			
			return result;
		}
Example #2
0
        public static Expression Collate(Expression expression)
        {
            var visitor = new SqlIncludeExpressionCollator();
            var result  = visitor.Visit(expression);

            foreach (var keyValue in visitor.includeExpressionsBySource)
            {
                var source      = keyValue.Key;
                var expressions = keyValue.Value;

                var newSource = Expression.Call(MethodInfoFastRef.QueryableExtensionsIncludeManyMethod.MakeGenericMethod(source.Type.GetSequenceElementType()), source, Expression.NewArrayInit(typeof(LambdaExpression), expressions));

                result = SqlExpressionReplacer.Replace(result, source, newSource);
            }

            return(result);
        }