Is there anyway to iterate through a Dapper DynamicParameters object?

I need to make a general logger to write specific insert / update instructions so that my testers can verify the correctness of the inserted data.

My first thought was that I would just use a function that accepts DynamicParameters, and I would suggest creating a line through DynamicParameters to display the name and value of the parameter and make them more readable for testers.

Unfortunately, Dapper.DynamicParameters does not contain a public definition for "GetEnumerator"

Here is a basic example of what I was hoping to do:

string myFormattedListofParameters = ""; foreach (var p in myDynamicParameters) { myFormattedListofParameters += p.Name + "=" + p.Value.ToString(); } 
+8
dapper
source share
3 answers

Try:

  var sb = new StringBuilder(); foreach (var name in p.ParameterNames) { var pValue = p.Get<dynamic>(name); sb.AppendFormat("{0}={1}\n", name, pValue.ToString()); } 
+5
source share
  string ParametersToString(DynamicParameters parameters) { var result = new StringBuilder(); if (parameters != null) { var firstParam = true; var parametersLookup = (SqlMapper.IParameterLookup)parameters; foreach (var paramName in parameters.ParameterNames) { if (!firstParam) { result.Append(", "); } firstParam = false; result.Append('@'); result.Append(paramName); result.Append(" = "); try { var value = parametersLookup[paramName];// parameters.Get<dynamic>(paramName); result.Append((value != null) ? value.ToString() : "{null}"); } catch { result.Append("unknown"); } } } return result.ToString(); } 
+5
source share

Just in case

 var pmaster = new Dapper.DynamicParameters(); SortedList l = new SortedList(); l.Add("param1", object1); l.Add("param2", object2); l.Add("param3", object3); l.Add("param4", object4); foreach(var key in l.Keys) { var val = l[key]; pmaster.Add(key.ToString(), val); } 

Worked for me.

-one
source share

All Articles