From 5e1767dcf642f7b8cc752a2950e142a5da8f19a8 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Sat, 22 Oct 2022 01:17:32 +0100 Subject: [PATCH] Reuse expression parameter if value has already been seen. This works in the same way for SqlExpression evaluation as SqlBuilder's ReuseParameters, except it is always on. --- src/NPoco/Expressions/SqlExpression.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/NPoco/Expressions/SqlExpression.cs b/src/NPoco/Expressions/SqlExpression.cs index fd810da3..44aac018 100644 --- a/src/NPoco/Expressions/SqlExpression.cs +++ b/src/NPoco/Expressions/SqlExpression.cs @@ -1092,6 +1092,11 @@ protected virtual object VisitConditional(ConditionalExpression conditional) protected string CreateParam(object value) { + // If value has already been provided, reuse the parameter. + var indexOfExistingValue = _params.IndexOf(value); + if (indexOfExistingValue >= 0) + return paramPrefix + indexOfExistingValue; + string paramPlaceholder = paramPrefix + _params.Count; _params.Add(value); return paramPlaceholder;