Skip to content

Commit 0a9983f

Browse files
authored
Optimization: avoid LINQ in ExpressionProcessor constructor (#429)
* Optimization: avoid LINQ in `ExpressionProcessor` constructor * Optimize CreateProvider()
1 parent 79adf65 commit 0a9983f

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

Orm/Xtensive.Orm/Orm/Providers/Expressions/ExpressionProcessor.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -516,8 +516,12 @@ public ExpressionProcessor(LambdaExpression lambda,
516516

517517
if (lambda.Parameters.Count != sourceColumns.Length)
518518
throw Exceptions.InternalError(Strings.ExParametersCountIsNotSameAsSourceColumnListsCount, OrmLog.Instance);
519-
if (sourceColumns.Any(list => list.Any(c => c is null)))
520-
throw Exceptions.InternalError(Strings.ExSourceColumnListContainsNullValues, OrmLog.Instance);
519+
foreach (var list in sourceColumns) {
520+
foreach (var c in list) {
521+
if (c is null)
522+
throw Exceptions.InternalError(Strings.ExSourceColumnListContainsNullValues, OrmLog.Instance);
523+
}
524+
}
521525

522526
this.compiler = compiler; // This might be null, check before use!
523527
this.lambda = lambda;

Orm/Xtensive.Orm/Orm/Providers/SqlCompiler.Index.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ internal protected override SqlProvider VisitIndex(IndexProvider provider)
4848
{
4949
var index = provider.Index.Resolve(Handlers.Domain.Model);
5050
var queryAndBindings = BuildProviderQuery(index);
51-
return CreateProvider(queryAndBindings.Query, queryAndBindings.Bindings.ToArray(), provider);
51+
return CreateProvider(queryAndBindings.Query, queryAndBindings.Bindings, provider);
5252
}
5353

5454
protected QueryAndBindings BuildProviderQuery(IndexInfo index)

0 commit comments

Comments
 (0)