title: .NET System Type to SqlDbType
body: <p>I was looking for a smart conversion between .Net System.Type and SqlDbType. What I found it was the following idea:</p>
  
  <pre><code>private static SqlDbType TypeToSqlDbType(Type t)
  {
      String name = t.Name;
      SqlDbType val = SqlDbType.VarChar; // default value
      try
      {
          if (name.Contains("16") || name.Contains("32") || name.Contains("64"))
              {
                  name = name.Substring(0, name.Length - 2);
              }
              val = (SqlDbType)Enum.Parse(typeof(SqlDbType), name, true);
          }
          catch (Exception)
          {
              // add error handling to suit your taste
          }
  
          return val;
      }
  </code></pre>
  
  <p>The code above is not really nice and is a code smell, which is why I wrote the following, naïve, not smart, but useful function, based on <a href="https://msdn.microsoft.com/en-us/library/cc716729(v=vs.110).aspx" rel="noreferrer">https://msdn.microsoft.com/en-us/library/cc716729(v=vs.110).aspx</a>:</p>
  
  <pre><code>   public static SqlDbType ConvertiTipo(Type giveType)
      {
         var typeMap = new Dictionary&lt;Type, SqlDbType&gt;();
  
          typeMap[typeof(string)] = SqlDbType.NVarChar;
          typeMap[typeof(char[])] = SqlDbType.NVarChar;
          typeMap[typeof(int)] = SqlDbType.Int;
          typeMap[typeof(Int32)] = SqlDbType.Int;
          typeMap[typeof(Int16)] = SqlDbType.SmallInt;
          typeMap[typeof(Int64)] = SqlDbType.BigInt;
          typeMap[typeof(Byte[])] = SqlDbType.VarBinary;
          typeMap[typeof(Boolean)] = SqlDbType.Bit;
          typeMap[typeof(DateTime)] = SqlDbType.DateTime2;
          typeMap[typeof(DateTimeOffset)] = SqlDbType.DateTimeOffset;
          typeMap[typeof(Decimal)] = SqlDbType.Decimal;
          typeMap[typeof(Double)] = SqlDbType.Float;
          typeMap[typeof(Decimal)] = SqlDbType.Money;
          typeMap[typeof(Byte)] = SqlDbType.TinyInt;
          typeMap[typeof(TimeSpan)] = SqlDbType.Time;
  
          return typeMap[(giveType)];
       }
  </code></pre>
  
  <p>Does someone have idea of how to get the same result in a cleaner, better and nice way?</p>