From b79065e6bad3de97004a0298e858d5e3ac30b882 Mon Sep 17 00:00:00 2001 From: Sergei Pavlov Date: Fri, 7 Nov 2025 14:21:57 -0800 Subject: [PATCH] Optimize `CombineProjections()` --- Orm/Xtensive.Orm/Orm/Linq/Translator.Queryable.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Orm/Xtensive.Orm/Orm/Linq/Translator.Queryable.cs b/Orm/Xtensive.Orm/Orm/Linq/Translator.Queryable.cs index 7f9aad345..e96cf1e4a 100644 --- a/Orm/Xtensive.Orm/Orm/Linq/Translator.Queryable.cs +++ b/Orm/Xtensive.Orm/Orm/Linq/Translator.Queryable.cs @@ -1253,7 +1253,10 @@ private ProjectionExpression CombineProjections(ProjectionExpression outer, Proj { var outerDataSource = outer.ItemProjector.DataSource; var outerLength = outerDataSource.Header.Length; - var tupleParameterBindings = outer.TupleParameterBindings.Union(inner.TupleParameterBindings).ToDictionary(pair => pair.Key, pair => pair.Value); + Dictionary, Tuple> tupleParameterBindings = new(outer.TupleParameterBindings); + foreach (var pair in inner.TupleParameterBindings) { + tupleParameterBindings.TryAdd(pair.Key, pair.Value); + } outer = new ProjectionExpression(outer.Type, outer.ItemProjector.Remap(recordQuery, 0), tupleParameterBindings); inner = new ProjectionExpression(inner.Type, inner.ItemProjector.Remap(recordQuery, outerLength), tupleParameterBindings);