无法将参数值字符串转换为IEnumerable

时间:2014-08-22 21:03:18

标签: c# sql dictionary

我有一本词典。我只是试图抓住密钥并使用它们来更新数据库。

foreach (string key in dt.Keys)
{
    var param = comm.Parameters.AddWithValue("@_AccountList", key);
    var paddingParam = comm.Parameters.AddWithValue("@padding", padding);
    var dateStartParam = comm.Parameters.AddWithValue("@proc_dateStart", startDate);
    var dateEndParam = comm.Parameters.AddWithValue("@proc_dateEnd", endDate);
    //table valued parameters
    param.SqlDbType = SqlDbType.Structured;
    var reader = comm.ExecuteNonQuery();
}

我的存储过程中的数据类型是varchar,应该可以使用。我不确定为什么要将我的密钥转换为IEnumerable。它可能与使用表值参数有关吗?

1 个答案:

答案 0 :(得分:4)

param变量包含NVarChar类型的参数(隐式),因为key是一个字符串,但由于某种原因您将其类型设置为SqlDbType.Structured。因此,数据提供程序尝试遍历该值,但不能,因为该值只是string类型。