IQueryable IQueryProvider.CreateQuery(System.Linq.Expressions.Expression expression) { if (expression == null) { throw System.Linq.Error.ArgumentNull("expression"); } Type type = TypeHelper.FindGenericType(typeof(IQueryable <>), expression.Type); if (type == null) { throw System.Linq.Error.ArgumentNotValid("expression"); } return(EnumerableQuery.Create(type.GetGenericArguments()[0], expression)); }
private static Type StripExpression(Type type) { bool isArray = type.IsArray; Type tmp = isArray ? type.GetElementType() : type; Type eType = TypeHelper.FindGenericType(typeof(Expression <>), tmp); if (eType != null) { tmp = eType.GetGenericArguments()[0]; } if (isArray) { int rank = type.GetArrayRank(); return((rank == 1) ? tmp.MakeArrayType() : tmp.MakeArrayType(rank)); } return(type); }
private static Type StripExpression(Type type) { bool isArray = type.IsArray; Type type2 = isArray ? type.GetElementType() : type; Type type3 = TypeHelper.FindGenericType(typeof(Expression <>), type2); if (type3 != null) { type2 = type3.GetGenericArguments()[0]; } if (!isArray) { return(type); } int arrayRank = type.GetArrayRank(); if (arrayRank != 1) { return(type2.MakeArrayType(arrayRank)); } return(type2.MakeArrayType()); }