c# - 将数据表转换为哈希表或将 sqldatareader 转换为哈希表的简便方法

标签 c# sql sql-server-2008 jquery

有没有一种简单的方法可以将 DataTable 转换为 HashTable 或将 SQLDataReader 转换为 HashTable?我必须通过 javascriptserializer 来解析它。我使用的代码有一些问题:

try
{
    using (SqlConnection conn = new SqlConnection(ConnectionString))
    {
        using (SqlCommand cmd = new SqlCommand(query, conn))
        {
            conn.Open();
            SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
            dt.Load(dr);
        }
    }

    Hashtable sendData = new Hashtable();

    foreach (DataRow drIn in dt.Rows)
    {

        sendData.Add(drIn["orderNumber"].ToString(), drIn["customerName"].ToString());

    }

    sendData.Add("orderNum", order);
    JavaScriptSerializer jss = new JavaScriptSerializer();
    string output = jss.Serialize(sendData);
    return output;
}
catch (Exception ex)
{
    return ex.Message + "-" + ex.StackTrace;
}

当从数据库中的一个表查询时,它给出了正确的结果,但从另一个表查询时却有问题。

还有其他方法吗?

最佳答案

可以使用下面的函数将DataTable转换为HashTable,

public static Hashtable convertDataTableToHashTable(DataTable dtIn,string keyField,string valueField)   
{    
   Hashtable htOut = new Hashtable();    
   foreach(DataRow drIn in dtIn.Rows)    
   {    
      htOut.Add(drIn[keyField].ToString(),drIn[valueField].ToString());    
   }   
   return htOut;    
}

然后在你的代码中使用,

Hashtable sendData = new Hashtable();
//You need to pass datatable, key field and value field
sendData = convertDataTableToHashTable(dt, "orderNumber", "customerName");

关于c# - 将数据表转换为哈希表或将 sqldatareader 转换为哈希表的简便方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2653883/

相关文章:

mysql - 向名为 "Grant"的用户授予权限?

sql-server-2008 - SQL Server 2008 排队事务复制与合并复制

c# - 限制 GridView C# UWP 中的项目数

c# - 有什么方法可以使用 ContinueWith 任务来启动任务吗?

c# - UML 类图 - 我们在这里包含像用户控件和 MainWindow 这样的部分类吗?

c# - 如何使用 linq 和 lambdas 从集合中获得前三名玩家和他们的高分

sql - azure 上托管的 .net 应用程序停止工作并发生异常 [Win32Exception (0x80004005) : Access is denied] [SqlException (0x80131904):

sql - Google BigQuery WHERE NOT 列表包含字符串的意外行为

sql-server - 无法获取有关 Windows NT 组/用户的信息

sql - XML 解析错误 : 'A string literal was expected' when inserting values into table