diff --git a/src/Umbraco.Core/Persistence/Querying/ExpressionVisitorBase.cs b/src/Umbraco.Core/Persistence/Querying/ExpressionVisitorBase.cs
index 76116a8d03..d4d27fa4df 100644
--- a/src/Umbraco.Core/Persistence/Querying/ExpressionVisitorBase.cs
+++ b/src/Umbraco.Core/Persistence/Querying/ExpressionVisitorBase.cs
@@ -32,7 +32,7 @@ namespace Umbraco.Core.Persistence.Querying
///
/// Gets or sets the SQL syntax provider for the current database.
///
- protected ISqlSyntaxProvider SqlSyntax { get; private set; }
+ protected ISqlSyntaxProvider SqlSyntax { get; }
///
/// Gets the list of SQL parameters.
@@ -56,6 +56,8 @@ namespace Umbraco.Core.Persistence.Querying
/// Also populates the SQL parameters.
public virtual string Visit(Expression expression)
{
+ if (expression == null) return string.Empty;
+
// if the expression is a CachedExpression,
// visit the inner expression if not already visited
var cachedExpression = expression as CachedExpression;
@@ -65,8 +67,6 @@ namespace Umbraco.Core.Persistence.Querying
expression = cachedExpression.InnerExpression;
}
- if (expression == null) return string.Empty;
-
string result;
switch (expression.NodeType)
@@ -135,35 +135,28 @@ namespace Umbraco.Core.Persistence.Querying
// if the expression is a CachedExpression,
// and is not already compiled, assign the result
- if (cachedExpression != null)
- {
- if (cachedExpression.Visited == false)
- cachedExpression.VisitResult = result;
- result = cachedExpression.VisitResult;
- }
-
- return result;
+ if (cachedExpression == null)
+ return result;
+ if (!cachedExpression.Visited)
+ cachedExpression.VisitResult = result;
+ return cachedExpression.VisitResult;
}
protected abstract string VisitMemberAccess(MemberExpression m);
protected virtual string VisitLambda(LambdaExpression lambda)
{
- if (lambda.Body.NodeType == ExpressionType.MemberAccess)
- {
- var m = lambda.Body as MemberExpression;
-
- if (m != null && m.Expression != null)
+ if (lambda.Body.NodeType == ExpressionType.MemberAccess &&
+ lambda.Body is MemberExpression memberExpression && memberExpression.Expression != null)
{
//This deals with members that are boolean (i.e. x => IsTrashed )
- var r = VisitMemberAccess(m);
+ var result = VisitMemberAccess(memberExpression);
SqlParameters.Add(true);
- return Visited ? string.Empty : string.Format("{0} = @{1}", r, SqlParameters.Count - 1);
+ return Visited ? string.Empty : $"{result} = @{SqlParameters.Count - 1}";
}
- }
return Visit(lambda.Body);
}
@@ -248,21 +241,10 @@ namespace Umbraco.Core.Persistence.Querying
{
case "MOD":
case "COALESCE":
- //don't execute if compiled
- if (Visited == false)
- {
- return string.Format("{0}({1},{2})", operand, left, right);
- }
- //already compiled, return
- return string.Empty;
+ return Visited ? string.Empty : $"{operand}({left},{right})";
+
default:
- //don't execute if compiled
- if (Visited == false)
- {
- return string.Concat("(", left, " ", operand, " ", right, ")");
- }
- //already compiled, return
- return string.Empty;
+ return Visited ? string.Empty : $"({left} {operand} {right})";
}
}
@@ -284,10 +266,10 @@ namespace Umbraco.Core.Persistence.Querying
return list;
}
- protected virtual string VisitNew(NewExpression nex)
+ protected virtual string VisitNew(NewExpression newExpression)
{
// TODO : check !
- var member = Expression.Convert(nex, typeof(object));
+ var member = Expression.Convert(newExpression, typeof(object));
var lambda = Expression.Lambda>(member);
try
{
@@ -295,20 +277,16 @@ namespace Umbraco.Core.Persistence.Querying
var o = getter();
SqlParameters.Add(o);
+
return Visited ? string.Empty : $"@{SqlParameters.Count - 1}";
}
catch (InvalidOperationException)
{
- if (Visited) return string.Empty;
+ if (Visited)
+ return string.Empty;
- var exprs = VisitExpressionList(nex.Arguments);
- var r = new StringBuilder();
- foreach (var e in exprs)
- {
- if (r.Length > 0) r.Append(",");
- r.Append(e);
- }
- return r.ToString();
+ var exprs = VisitExpressionList(newExpression.Arguments);
+ return string.Join(",", exprs);
}
}
@@ -323,6 +301,7 @@ namespace Umbraco.Core.Persistence.Querying
return "null";
SqlParameters.Add(c.Value);
+
return Visited ? string.Empty : $"@{SqlParameters.Count - 1}";
}
@@ -375,27 +354,11 @@ namespace Umbraco.Core.Persistence.Querying
protected virtual string VisitNewArray(NewArrayExpression na)
{
var exprs = VisitExpressionList(na.Expressions);
-
- //don't execute if compiled
- if (Visited == false)
- {
- var r = new StringBuilder();
- foreach (var e in exprs)
- {
- r.Append(r.Length > 0 ? "," + e : e);
- }
-
- return r.ToString();
- }
- //already compiled, return
- return string.Empty;
+ return Visited ? string.Empty : string.Join(",", exprs);
}
protected virtual List