Files
2026-06-04 11:42:34 +02:00

111 lines
3.4 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq.Expressions;
namespace System.Linq
{
// Token: 0x02000045 RID: 69
internal class QueryableEnumerable<TElement> : IEnumerable, IOrderedQueryable, IQueryProvider, IQueryable, IQueryableEnumerable, IEnumerable<TElement>, IQueryableEnumerable<TElement>, IQueryable<TElement>, IOrderedQueryable<TElement>
{
// Token: 0x06000423 RID: 1059 RVA: 0x00013D5C File Offset: 0x00011F5C
public QueryableEnumerable(IEnumerable<TElement> 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<TElement> GetEnumerator()
{
return this.Execute<IEnumerable<TElement>>(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<TElement>.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<TElem> CreateQuery<TElem>(Expression expression)
{
return new QueryableEnumerable<TElem>(expression);
}
// Token: 0x0600042F RID: 1071 RVA: 0x00013E50 File Offset: 0x00012050
public TResult Execute<TResult>(Expression expression)
{
Expression<Func<TResult>> expression2 = Expression.Lambda<Func<TResult>>(QueryableEnumerable<TElement>.TransformQueryable(expression), new ParameterExpression[0]);
return expression2.Compile()();
}
// Token: 0x040000F0 RID: 240
private Expression expression;
// Token: 0x040000F1 RID: 241
private IEnumerable<TElement> enumerable;
}
}