using System; using System.Collections; using System.Collections.Generic; using System.Linq.Expressions; namespace System.Linq { // Token: 0x02000045 RID: 69 internal class QueryableEnumerable : IEnumerable, IOrderedQueryable, IQueryProvider, IQueryable, IQueryableEnumerable, IEnumerable, IQueryableEnumerable, IQueryable, IOrderedQueryable { // Token: 0x06000423 RID: 1059 RVA: 0x00013D5C File Offset: 0x00011F5C public QueryableEnumerable(IEnumerable enumerable) { this.expression = Expression.Constant(this); this.enumerable = enumerable; } // Token: 0x06000424 RID: 1060 RVA: 0x00013D78 File Offset: 0x00011F78 public QueryableEnumerable(Expression expression) { this.expression = expression; } // Token: 0x06000425 RID: 1061 RVA: 0x00013D88 File Offset: 0x00011F88 IEnumerator IEnumerable.GetEnumerator() { return this.GetEnumerator(); } // Token: 0x17000043 RID: 67 // (get) Token: 0x06000426 RID: 1062 RVA: 0x00013D90 File Offset: 0x00011F90 public Type ElementType { get { return typeof(TElement); } } // Token: 0x17000044 RID: 68 // (get) Token: 0x06000427 RID: 1063 RVA: 0x00013D9C File Offset: 0x00011F9C public Expression Expression { get { return this.expression; } } // Token: 0x17000045 RID: 69 // (get) Token: 0x06000428 RID: 1064 RVA: 0x00013DA4 File Offset: 0x00011FA4 public IQueryProvider Provider { get { return this; } } // Token: 0x06000429 RID: 1065 RVA: 0x00013DA8 File Offset: 0x00011FA8 public IEnumerable GetEnumerable() { return this.enumerable; } // Token: 0x0600042A RID: 1066 RVA: 0x00013DB0 File Offset: 0x00011FB0 public IEnumerator GetEnumerator() { return this.Execute>(this.expression).GetEnumerator(); } // Token: 0x0600042B RID: 1067 RVA: 0x00013DC4 File Offset: 0x00011FC4 public IQueryable CreateQuery(Expression expression) { return (IQueryable)Activator.CreateInstance(typeof(QueryableEnumerable<>).MakeGenericType(new Type[] { expression.Type.GetFirstGenericArgument() }), new object[] { expression }); } // Token: 0x0600042C RID: 1068 RVA: 0x00013E08 File Offset: 0x00012008 public object Execute(Expression expression) { LambdaExpression lambdaExpression = Expression.Lambda(QueryableEnumerable.TransformQueryable(expression), new ParameterExpression[0]); return lambdaExpression.Compile().DynamicInvoke(new object[0]); } // Token: 0x0600042D RID: 1069 RVA: 0x00013E38 File Offset: 0x00012038 private static Expression TransformQueryable(Expression expression) { return new QueryableTransformer().Transform(expression); } // Token: 0x0600042E RID: 1070 RVA: 0x00013E48 File Offset: 0x00012048 public IQueryable CreateQuery(Expression expression) { return new QueryableEnumerable(expression); } // Token: 0x0600042F RID: 1071 RVA: 0x00013E50 File Offset: 0x00012050 public TResult Execute(Expression expression) { Expression> expression2 = Expression.Lambda>(QueryableEnumerable.TransformQueryable(expression), new ParameterExpression[0]); return expression2.Compile()(); } // Token: 0x040000F0 RID: 240 private Expression expression; // Token: 0x040000F1 RID: 241 private IEnumerable enumerable; } }