public IQueryable CreateQuery(Expression expression) { if (_currentExpression == expression) { return(this); } Type elementType = TypeHelpers.FindElementType(expression); Type queryableType = TransformQueryableCache.GetTransformQueryableType(elementType); return((IQueryable)Activator.CreateInstance( queryableType, new object[] { _source, _typeMappings, _propertyMappings, _selectParameterMappings, _containerClassMappings, expression })); }
public object Execute(Expression expression) { MethodInfo methodInfo = TransformQueryableCache.GetTransformQueryableExecuteMethodInfo(typeof(T), expression.Type); return(methodInfo.Invoke(this, new object[] { expression })); }
IEnumerator IEnumerable.GetEnumerator() { MethodInfo methodInfo = TransformQueryableCache.GetTransformQueryableGetEnumeratorMethodInfo(typeof(T)); return((IEnumerator)methodInfo.Invoke(this, null)); }