Skip to content

Commit eae3873

Browse files
committed
use collection expression
1 parent c34148a commit eae3873

File tree

37 files changed

+107
-107
lines changed

37 files changed

+107
-107
lines changed

src/Remote.Linq.Async.Queryable/DynamicQuery/RemoteLinqAsyncQueryProvider`1.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,14 +106,14 @@ public async ValueTask<TResult> ExecuteAsync<TResult>(SystemLinq.Expression expr
106106
private TResult MapAsyncEnumerable<TResult>(Type elementType, IAsyncEnumerable<TSource?> source, CancellationToken cancellation)
107107
{
108108
var method = _mapAsyncEnumerableMethodInfo.MakeGenericMethod(elementType);
109-
var result = method.Invoke(null, new object[] { source, _resultMapper, cancellation });
109+
var result = method.Invoke(null, [source, _resultMapper, cancellation]);
110110
return (TResult)result!;
111111
}
112112

113113
private ValueTask<TResult> MapSingleElementStream<TResult>(IAsyncEnumerable<TSource?> source, CancellationToken cancellation)
114114
{
115115
var method = _mapSingleElementStreamMethodInfo.MakeGenericMethod(typeof(TResult));
116-
var result = method.Invoke(null, new object[] { source, _resultMapper, cancellation });
116+
var result = method.Invoke(null, [source, _resultMapper, cancellation]);
117117
return (ValueTask<TResult>)result!;
118118
}
119119

src/Remote.Linq.Async.Queryable/ExpressionExecution/AsyncQueryExpressionTranslatorContext.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,11 @@ protected override bool ShouldMapToDynamicObject(IEnumerable collection)
3939
var genericTypeArguments = default(Type[]);
4040
if (obj?.GetType().Implements(typeof(IAsyncGrouping<,>), out genericTypeArguments) is true)
4141
{
42-
obj = MapAsyncGroupToDynamicObjectGraphMethod(genericTypeArguments!).Invoke(null, new[] { obj });
42+
obj = MapAsyncGroupToDynamicObjectGraphMethod(genericTypeArguments!).Invoke(null, [obj]);
4343
}
4444
else if (obj?.GetType().Implements(typeof(IAsyncEnumerable<>), out genericTypeArguments) is true)
4545
{
46-
obj = MapAsyncEnumerableMethod(genericTypeArguments!).Invoke(null, new[] { obj });
46+
obj = MapAsyncEnumerableMethod(genericTypeArguments!).Invoke(null, [obj]);
4747
}
4848

4949
return base.MapToDynamicObjectGraph(obj, setTypeInformation);

src/Remote.Linq.Async.Queryable/ExpressionExecution/Helper.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ internal static class Helper
2222
{
2323
task.AssertNotNull();
2424
resultType.AssertNotNull();
25-
var result = ToSingleElementStreamMethod(resultType).Invoke(null, new[] { task });
25+
var result = ToSingleElementStreamMethod(resultType).Invoke(null, [task]);
2626
return (IAsyncEnumerable<object?>)result!;
2727
}
2828

@@ -36,7 +36,7 @@ internal static class Helper
3636
public static IAsyncEnumerable<object?> MapAsyncEnumerable(object asyncEnumerable, Type itemType)
3737
{
3838
itemType.AssertNotNull();
39-
var result = MapAsyncEnumerableMethod(itemType).Invoke(null, new[] { asyncEnumerable });
39+
var result = MapAsyncEnumerableMethod(itemType).Invoke(null, [asyncEnumerable]);
4040
return (IAsyncEnumerable<object?>)result!;
4141
}
4242

@@ -55,7 +55,7 @@ internal static class Helper
5555
{
5656
task.AssertNotNull();
5757
resultType.AssertNotNull();
58-
var result = MapTaskAsyncMethod(resultType).Invoke(null, new[] { task });
58+
var result = MapTaskAsyncMethod(resultType).Invoke(null, [task]);
5959
return (ValueTask<object?>)result!;
6060
}
6161

src/Remote.Linq.EntityFramework/EntityFrameworkMethodInfos.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,13 @@ private TProperty()
3535

3636
internal static readonly MethodInfo StringIncludeMethodInfo = typeof(System.Data.Entity.QueryableExtensions).GetMethodEx(
3737
nameof(System.Data.Entity.QueryableExtensions.Include),
38-
new[] { typeof(T) },
38+
[typeof(T)],
3939
typeof(IQueryable<T>),
4040
typeof(string));
4141

4242
internal static readonly MethodInfo IncludeMethodInfo = typeof(System.Data.Entity.QueryableExtensions).GetMethodEx(
4343
nameof(System.Data.Entity.QueryableExtensions.Include),
44-
new[] { typeof(T), typeof(TProperty) },
44+
[typeof(T), typeof(TProperty)],
4545
typeof(IQueryable<T>),
4646
typeof(Expression<Func<T, TProperty>>));
4747
}

src/Remote.Linq.EntityFramework/ExpressionExecution/Helper.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,19 +38,19 @@ private TEntity()
3838

3939
private static readonly MethodInfo QueryableToListAsyncMethod = typeof(QueryableExtensions).GetMethodEx(
4040
nameof(QueryableExtensions.ToListAsync),
41-
new[] { typeof(TSource) },
41+
[typeof(TSource)],
4242
typeof(IQueryable<TSource>),
4343
typeof(CancellationToken));
4444

4545
private static readonly MethodInfo DbContextSetMethod = typeof(DbContext).GetMethodEx(
4646
nameof(DbContext.Set),
47-
genericArguments: new[] { typeof(TEntity) });
47+
genericArguments: [typeof(TEntity)]);
4848

4949
internal static Task ToListAsync(IQueryable source, CancellationToken cancellation)
5050
{
5151
source.AssertNotNull();
5252
var method = QueryableToListAsyncMethod.MakeGenericMethod(source.ElementType);
53-
var task = method.Invoke(null, new object[] { source, cancellation });
53+
var task = method.Invoke(null, [source, cancellation]);
5454
return (Task)task!;
5555
}
5656

src/Remote.Linq.EntityFrameworkCore/ExpressionExecution/Helper.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,21 +40,21 @@ private TEntity()
4040

4141
private static readonly MethodInfo _entityFrameworkQueryableToListAsyncMethod = typeof(EntityFrameworkQueryableExtensions).GetMethodEx(
4242
nameof(EntityFrameworkQueryableExtensions.ToListAsync),
43-
new[] { typeof(TSource) },
43+
[typeof(TSource)],
4444
typeof(IQueryable<TSource>),
4545
typeof(CancellationToken));
4646

4747
private static readonly MethodInfo _dbContextSetMethod = typeof(DbContext).GetMethodEx(
4848
nameof(DbContext.Set),
49-
genericArguments: new[] { typeof(TEntity) });
49+
genericArguments: [typeof(TEntity)]);
5050

5151
private static readonly MethodInfo _executeAsAsyncStreamMethod = typeof(Helper).GetMethodEx(nameof(ExecuteAsAsyncStream));
5252

5353
internal static Task ToListAsync(IQueryable source, CancellationToken cancellation)
5454
{
5555
source.AssertNotNull();
5656
var method = _entityFrameworkQueryableToListAsyncMethod.MakeGenericMethod(source.ElementType);
57-
var task = method.Invoke(null, new object[] { source, cancellation });
57+
var task = method.Invoke(null, [source, cancellation]);
5858
return (Task)task!;
5959
}
6060

@@ -88,7 +88,7 @@ public IQueryable GetQueryableSet(Type type)
8888
{
8989
queryable.AssertNotNull();
9090
var method = _executeAsAsyncStreamMethod.MakeGenericMethod(queryable.ElementType);
91-
var asyncStream = method.Invoke(null, new object[] { queryable, cancellation });
91+
var asyncStream = method.Invoke(null, [queryable, cancellation]);
9292
return (IAsyncEnumerable<object?>)asyncStream!;
9393
}
9494

src/Remote.Linq.EntityFrameworkCore/ExpressionVisitors/SystemExpressionReWriter.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,25 +74,25 @@ private TPreviousProperty()
7474

7575
internal static readonly MethodInfo StringIncludeMethodInfo = typeof(EntityFrameworkQueryableExtensions).GetMethodEx(
7676
nameof(EntityFrameworkQueryableExtensions.Include),
77-
new[] { typeof(TEntity) },
77+
[typeof(TEntity)],
7878
typeof(IQueryable<TEntity>),
7979
typeof(string));
8080

8181
internal static readonly MethodInfo IncludeMethodInfo = typeof(EntityFrameworkQueryableExtensions).GetMethodEx(
8282
nameof(EntityFrameworkQueryableExtensions.Include),
83-
new[] { typeof(TEntity), typeof(TProperty) },
83+
[typeof(TEntity), typeof(TProperty)],
8484
typeof(IQueryable<TEntity>),
8585
typeof(Expression<Func<TEntity, TProperty>>));
8686

8787
internal static readonly MethodInfo ThenIncludeAfterEnumerableMethodInfo = typeof(EntityFrameworkQueryableExtensions).GetMethodEx(
8888
nameof(EntityFrameworkQueryableExtensions.ThenInclude),
89-
new[] { typeof(TEntity), typeof(TPreviousProperty), typeof(TProperty) },
89+
[typeof(TEntity), typeof(TPreviousProperty), typeof(TProperty)],
9090
typeof(Microsoft.EntityFrameworkCore.Query.IIncludableQueryable<TEntity, IEnumerable<TPreviousProperty>>),
9191
typeof(Expression<Func<TPreviousProperty, TProperty>>));
9292

9393
internal static readonly MethodInfo ThenIncludeAfterReferenceMethodInfo = typeof(EntityFrameworkQueryableExtensions).GetMethodEx(
9494
nameof(EntityFrameworkQueryableExtensions.ThenInclude),
95-
new[] { typeof(TEntity), typeof(TPreviousProperty), typeof(TProperty) },
95+
[typeof(TEntity), typeof(TPreviousProperty), typeof(TProperty)],
9696
typeof(Microsoft.EntityFrameworkCore.Query.IIncludableQueryable<TEntity, TPreviousProperty>),
9797
typeof(Expression<Func<TPreviousProperty, TProperty>>));
9898
}

src/Remote.Linq/DynamicQuery/AsyncRemoteQueryProvider`1.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ namespace Remote.Linq.DynamicQuery;
1818
public sealed class AsyncRemoteQueryProvider<TSource> : IAsyncRemoteQueryProvider
1919
{
2020
private static readonly MethodInfo _executeMethod = typeof(AsyncRemoteQueryProvider<TSource>)
21-
.GetMethodEx(nameof(Execute), new[] { typeof(MethodInfos.TResult) }, typeof(SystemLinq.Expression));
21+
.GetMethodEx(nameof(Execute), [typeof(MethodInfos.TResult)], typeof(SystemLinq.Expression));
2222

2323
private readonly Func<RemoteLinq.Expression, CancellationToken, ValueTask<TSource?>> _asyncDataProvider;
2424
private readonly IAsyncQueryResultMapper<TSource> _resultMapper;

src/Remote.Linq/DynamicQuery/DynamicResultMapper.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ internal static TResult MapToSingleResult<TResult>(Type elementType, System.Coll
9494
var hasPredicate = methodCallExpression.Arguments.Count is 2;
9595
var arguments = hasPredicate
9696
? new object[] { result, GetTruePredicate(elementType) }
97-
: new object[] { result };
97+
: [result];
9898
var method = methodCallExpression.Method.Name.EndsWith("OrDefault", StringComparison.Ordinal)
9999
? (hasPredicate ? MethodInfos.Enumerable.SingleOrDefaultWithPredicate : MethodInfos.Enumerable.SingleOrDefault)
100100
: (hasPredicate ? MethodInfos.Enumerable.SingleWithPredicate : MethodInfos.Enumerable.Single);

src/Remote.Linq/DynamicQuery/RemoteQueryProvider`1.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ namespace Remote.Linq.DynamicQuery;
1212
public sealed class RemoteQueryProvider<TSource> : IRemoteQueryProvider
1313
{
1414
private static readonly MethodInfo _executeMethod = typeof(RemoteQueryProvider<TSource>)
15-
.GetMethodEx(nameof(Execute), new[] { typeof(MethodInfos.TResult) }, typeof(Expression));
15+
.GetMethodEx(nameof(Execute), [typeof(MethodInfos.TResult)], typeof(Expression));
1616

1717
private readonly Func<Expressions.Expression, TSource?> _dataProvider;
1818
private readonly IQueryResultMapper<TSource> _resultMapper;

src/Remote.Linq/ExpressionExecution/DefaultExpressionExecutor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ private DynamicObject Map(object? value, Type? type)
6262
: _mapper.MapObject(value, _setTypeInformation);
6363

6464
private object[] MapArray(object array, Type elementType)
65-
=> (object[])_mapArrayMethodInfo.MakeGenericMethod(elementType).Invoke(this, new[] { array })!;
65+
=> (object[])_mapArrayMethodInfo.MakeGenericMethod(elementType).Invoke(this, [array])!;
6666

6767
private object[] MapArray<T>(T[] array)
6868
=> array

src/Remote.Linq/ExpressionTranslatorContext.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -134,12 +134,12 @@ protected override bool ShouldMapToDynamicObject(IEnumerable collection)
134134
typeof(System.Numerics.Complex),
135135
typeof(byte[]),
136136
}
137-
.SelectMany(x => x.IsValueType ? new[] { x, typeof(Nullable<>).MakeGenericType(x) } : new[] { x })
137+
.SelectMany(x => x.IsValueType ? new[] { x, typeof(Nullable<>).MakeGenericType(x) } : [x])
138138
.ToHashSet()
139139
.Contains;
140140

141-
private static readonly Type[] _unmappedTypes = new[]
142-
{
141+
private static readonly Type[] _unmappedTypes =
142+
[
143143
typeof(CancellationToken),
144144
typeof(ConstantQueryArgument),
145145
typeof(VariableQueryArgument),
@@ -149,12 +149,12 @@ protected override bool ShouldMapToDynamicObject(IEnumerable collection)
149149
typeof(SystemLinq.Expression),
150150
typeof(IQueryable),
151151
typeof(IRemoteLinqQueryable),
152-
};
152+
];
153153

154-
private static readonly Type[] _excludeFromUnmappedTypes = new[]
155-
{
154+
private static readonly Type[] _excludeFromUnmappedTypes =
155+
[
156156
typeof(EnumerableQuery),
157-
};
157+
];
158158

159159
/// <summary>
160160
/// Initializes a new instance of the <see cref="ExpressionTranslatorContext"/> class.
@@ -238,7 +238,7 @@ public ExpressionTranslatorContext(
238238
private static object? MapGroupToDynamicObjectGraphMethod(Type[] genericTypeArguments, object group)
239239
=> _mapGroupToDynamicObjectGraphMethodDefinition
240240
.MakeGenericMethod(genericTypeArguments)
241-
.Invoke(null, new[] { group });
241+
.Invoke(null, [group]);
242242

243243
private static Grouping<TKey, TElement> MapGroupToDynamicObjectGraph<TKey, TElement>(IGrouping<TKey, TElement> group)
244244
=> group is Grouping<TKey, TElement> grouping

src/Remote.Linq/ExpressionVisitors/SystemExpressionEvaluator.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -166,20 +166,20 @@ private static Expression Evaluate(Expression expression)
166166
var elementType = TypeHelper.GetElementType(collectionType);
167167
if (expression.Type.IsAssignableFrom(elementType.MakeArrayType()))
168168
{
169-
var enumerated = MethodInfos.Enumerable.ToArray.MakeGenericMethod(elementType).Invoke(null, new[] { value });
169+
var enumerated = MethodInfos.Enumerable.ToArray.MakeGenericMethod(elementType).Invoke(null, [value]);
170170
value = enumerated;
171171
}
172172
else if (value is EnumerableQuery && expression.Type.IsAssignableFrom(typeof(IQueryable<>).MakeGenericType(elementType)))
173173
{
174-
var enumerated = MethodInfos.Enumerable.ToArray.MakeGenericMethod(elementType).Invoke(null, new[] { value });
175-
var queryable = MethodInfos.Queryable.AsQueryable.MakeGenericMethod(elementType).Invoke(null, new[] { enumerated });
174+
var enumerated = MethodInfos.Enumerable.ToArray.MakeGenericMethod(elementType).Invoke(null, [value]);
175+
var queryable = MethodInfos.Queryable.AsQueryable.MakeGenericMethod(elementType).Invoke(null, [enumerated]);
176176
value = queryable;
177177
}
178178
}
179179

180180
return Expression.Property(
181181
Expression.New(
182-
typeof(VariableQueryArgument<>).MakeGenericType(expression.Type).GetConstructor(new[] { expression.Type })!,
182+
typeof(VariableQueryArgument<>).MakeGenericType(expression.Type).GetConstructor([expression.Type])!,
183183
Expression.Constant(value, expression.Type)),
184184
nameof(VariableQueryArgument<object>.Value));
185185
}

src/Remote.Linq/ExpressionVisitors/VariableQueryArgumentVisitor.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ protected override Expression VisitConstant(ConstantExpression node)
127127
{
128128
var type = nonGenericQueryArgument.Type.ResolveType(TypeResolver);
129129
var value = nonGenericQueryArgument.Value;
130-
var queryArgument = Activator.CreateInstance(typeof(VariableQueryArgument<>).MakeGenericType(type), new[] { value });
130+
var queryArgument = Activator.CreateInstance(typeof(VariableQueryArgument<>).MakeGenericType(type), [value]);
131131
return new ConstantExpression(queryArgument);
132132
}
133133

@@ -136,7 +136,7 @@ protected override Expression VisitConstant(ConstantExpression node)
136136
var elementType = nonGenericQueryArgumentList.ElementType.ResolveType(TypeResolver);
137137
var values = nonGenericQueryArgumentList.Values;
138138
var methodInfo = CreateVariableQueryArgumentListMethodInfo.MakeGenericMethod(elementType);
139-
var queryArgument = methodInfo.Invoke(null, new object[] { values });
139+
var queryArgument = methodInfo.Invoke(null, [values]);
140140
return new ConstantExpression(queryArgument);
141141
}
142142

src/Remote.Linq/Include/IncludeQueryableExtensions.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ private sealed class TPreviousProperty
4343
/// </summary>
4444
public static readonly MethodInfo StringIncludeMethodInfo = typeof(IncludeQueryableExtensions).GetMethodEx(
4545
nameof(IncludeQueryableExtensions.Include),
46-
new[] { typeof(T) },
46+
[typeof(T)],
4747
typeof(IQueryable<T>),
4848
typeof(string));
4949

@@ -52,7 +52,7 @@ private sealed class TPreviousProperty
5252
/// </summary>
5353
public static readonly MethodInfo IncludeMethodInfo = typeof(IncludeQueryableExtensions).GetMethodEx(
5454
nameof(IncludeQueryableExtensions.Include),
55-
new[] { typeof(T), typeof(TProperty) },
55+
[typeof(T), typeof(TProperty)],
5656
typeof(IQueryable<T>),
5757
typeof(Expression<Func<T, TProperty>>));
5858

@@ -63,7 +63,7 @@ private sealed class TPreviousProperty
6363
/// </summary>
6464
public static readonly MethodInfo ThenIncludeAfterEnumerableMethodInfo = typeof(IncludeQueryableExtensions).GetMethodEx(
6565
nameof(IncludeQueryableExtensions.ThenInclude),
66-
new[] { typeof(T), typeof(TPreviousProperty), typeof(TProperty) },
66+
[typeof(T), typeof(TPreviousProperty), typeof(TProperty)],
6767
typeof(IIncludableQueryable<T, IEnumerable<TPreviousProperty>>),
6868
typeof(Expression<Func<TPreviousProperty, TProperty>>));
6969

@@ -74,7 +74,7 @@ private sealed class TPreviousProperty
7474
/// </summary>
7575
public static readonly MethodInfo ThenIncludeAfterReferenceMethodInfo = typeof(IncludeQueryableExtensions).GetMethodEx(
7676
nameof(IncludeQueryableExtensions.ThenInclude),
77-
new[] { typeof(T), typeof(TPreviousProperty), typeof(TProperty) },
77+
[typeof(T), typeof(TPreviousProperty), typeof(TProperty)],
7878
typeof(IIncludableQueryable<T, TPreviousProperty>),
7979
typeof(Expression<Func<TPreviousProperty, TProperty>>));
8080

src/Remote.Linq/Include/RemoteIncludeExpressionReWriter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ protected override Expression VisitConstant(ConstantExpression node)
8383
};
8484

8585
var m = method.MakeGenericMethod(args);
86-
var expression = (Expression)m.Invoke(null, new[] { node.Value })!;
86+
var expression = (Expression)m.Invoke(null, [node.Value])!;
8787
return Visit(expression);
8888
}
8989

0 commit comments

Comments
 (0)