Skip to content

Commit 8b68947

Browse files
committed
Linq translator improvements
1 parent 387bbcb commit 8b68947

3 files changed

Lines changed: 10 additions & 5 deletions

File tree

Orm/Xtensive.Orm/Orm/Linq/ExpressionEvaluator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ private static bool CanEvaluateExpression(Expression expression)
102102
return !WellKnownInterfaces.Queryable.IsAssignableFrom(ma.Type);
103103
}
104104

105-
if (ma.Expression.Type.IsNullable() && ma.Member.Name == "Value") {
105+
if (ma.Expression.Type.IsNullable() && ma.Member.Name.Equals("Value", StringComparison.Ordinal)) {
106106
return false;
107107
}
108108

Orm/Xtensive.Orm/Orm/Linq/Expressions/Visitors/ExtendedExpressionReplacer.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,8 @@ protected override Expression VisitColumnExpression(ColumnExpression expression)
120120
protected override Expression VisitConstructorExpression(ConstructorExpression expression)
121121
{
122122
var arguments = new List<Expression>();
123-
var bindings = new Dictionary<MemberInfo, Expression>();
124-
var nativeBindings = new Dictionary<MemberInfo, Expression>();
123+
var bindings = new Dictionary<MemberInfo, Expression>(expression.Bindings.Count);
124+
var nativeBindings = new Dictionary<MemberInfo, Expression>(expression.NativeBindings.Count);
125125
bool recreate = false;
126126
foreach (var argument in expression.ConstructorArguments) {
127127
var result = Visit(argument);

Orm/Xtensive.Orm/Orm/Linq/Translator.Queryable.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1572,8 +1572,13 @@ private Expression VisitSetOperations(Expression outerSource, Expression innerSo
15721572
var outerColumnList = outerItemProjector.GetColumns(ColumnExtractionModes.Distinct);
15731573
var innerColumnList = innerItemProjector.GetColumns(ColumnExtractionModes.Distinct);
15741574
if (!outerColumnList.Except(innerColumnList).Any() && outerColumnList.Count == innerColumnList.Count) {
1575-
outerColumnList = outerColumnList.OrderBy(i => i).ToList();
1576-
innerColumnList = innerColumnList.OrderBy(i => i).ToList();
1575+
var outerColumnListCopy = outerColumnList.ToList();
1576+
outerColumnListCopy.Sort();
1577+
outerColumnList = outerColumnListCopy;
1578+
1579+
var innerColumnListCopy = innerColumnList.ToList();
1580+
innerColumnListCopy.Sort();
1581+
innerColumnList = innerColumnListCopy;
15771582
}
15781583

15791584
var outerColumns = outerColumnList.ToArray();

0 commit comments

Comments
 (0)