From f9bd30fb9bc31fa82f5633e7270cc3a2d512909d Mon Sep 17 00:00:00 2001 From: Marc Gravell Date: Fri, 8 Jul 2016 14:41:51 +0100 Subject: [PATCH] Simplify the string_split implementation --- Dapper/SqlMapper.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Dapper/SqlMapper.cs b/Dapper/SqlMapper.cs index 4c739085..ae211586 100644 --- a/Dapper/SqlMapper.cs +++ b/Dapper/SqlMapper.cs @@ -1990,13 +1990,13 @@ namespace Dapper private static bool TryStringSplit(ref IEnumerable list, int splitAt, string namePrefix, IDbCommand command) { if (list == null || splitAt < 0) return false; - if (list is IEnumerable) return TryStringSplit(ref list, splitAt, namePrefix, command, "int not null", + if (list is IEnumerable) return TryStringSplit(ref list, splitAt, namePrefix, command, "int", (sb, i) => sb.Append(i.ToString(CultureInfo.InvariantCulture))); - if (list is IEnumerable) return TryStringSplit(ref list, splitAt, namePrefix, command, "bigint not null", + if (list is IEnumerable) return TryStringSplit(ref list, splitAt, namePrefix, command, "bigint", (sb, i) => sb.Append(i.ToString(CultureInfo.InvariantCulture))); - if (list is IEnumerable) return TryStringSplit(ref list, splitAt, namePrefix, command, "smallint not null", + if (list is IEnumerable) return TryStringSplit(ref list, splitAt, namePrefix, command, "smallint", (sb, i) => sb.Append(i.ToString(CultureInfo.InvariantCulture))); - if (list is IEnumerable) return TryStringSplit(ref list, splitAt, namePrefix, command, "tinyint not null", + if (list is IEnumerable) return TryStringSplit(ref list, splitAt, namePrefix, command, "tinyint", (sb, i) => sb.Append(i.ToString(CultureInfo.InvariantCulture))); return false; } @@ -2024,12 +2024,12 @@ namespace Dapper else { varName = variableName; - return "(select val from " + variableName + "_TSS)"; + return "(select cast([value] as " + colType + ") from string_split(" + variableName + ",','))"; } }, RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.CultureInvariant); if (varName == null) return false; // couldn't resolve the var! - command.CommandText = "declare " + varName + "_TSS table(val " + colType + ");insert " + varName + "_TSS (val) select value from string_split(" + varName + ",',');" + sql; + command.CommandText = sql; var concatenatedParam = command.CreateParameter(); concatenatedParam.ParameterName = namePrefix; concatenatedParam.DbType = DbType.AnsiString;