diff --git a/Dapper/DynamicParametersExtensions.cs b/Dapper/DynamicParametersExtensions.cs
new file mode 100644
index 000000000..bbd41f762
--- /dev/null
+++ b/Dapper/DynamicParametersExtensions.cs
@@ -0,0 +1,45 @@
+using System.Reflection;
+
+namespace Dapper
+{
+ ///
+ /// An Extention Class to DynamicParameters
+ ///
+
+ internal static class DynamicParametersExtensions
+ {
+ ///
+ /// Add Parameter if exists
+ ///
+ /// Extending DynamicParameter
+ /// Parameter Name
+ /// Parameter with type of dynamic
+ internal static void AddIfExists(this DynamicParameters dp, string paramName, dynamic? param)
+ {
+ if (param is null)
+ {
+ return;
+ }
+ dp.Add(paramName, param);
+ }
+
+ ///
+ /// Add members of class as parameter; if the member is not null
+ ///
+ /// Generic Type
+ /// Extending DynamicParameters
+ ///
+ public static void AddParametersIfExists(this DynamicParameters dp, T param)
+ {
+ if (param is not null)
+ {
+ foreach (PropertyInfo prop in param.GetType().GetProperties())
+ {
+
+ AddIfExists(dp, paramName: prop.Name, param: prop.GetValue(param));
+
+ }
+ }
+ }
+ }
+}
diff --git a/Dapper/PublicAPI.Unshipped.txt b/Dapper/PublicAPI.Unshipped.txt
index 91b0e1a43..1bc9f1a27 100644
--- a/Dapper/PublicAPI.Unshipped.txt
+++ b/Dapper/PublicAPI.Unshipped.txt
@@ -1 +1,4 @@
-#nullable enable
\ No newline at end of file
+#nullable enable
+Dapper.DynamicParametersExtensions
+static Dapper.DynamicParametersExtensions.AddIfExists(this Dapper.DynamicParameters! dp, string! paramName, dynamic? param) -> void
+static Dapper.DynamicParametersExtensions.AddParametersIfExists(this Dapper.DynamicParameters! dp, T param) -> void
\ No newline at end of file