2010-04-16 7 views
6

¿Hay una manera fácil de convertir un DataTable a un HashTable o una SQLDataReader a un HashTable? Tengo que analizarlo a través de javascriptserializer. El código que estoy utilizando tiene algunos problemas:Una forma sencilla de convertir la tabla de datos de la tabla de hash o SqlDataReader a HashTable

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; 
} 

Se trata de dar un resultado correcto cuando se les pregunta de una tabla en la base de datos, pero de otra tabla que está teniendo un problema.

¿Hay alguna otra manera de hacerlo?

+3

favor decribe el problema, con el mensaje de error exacto. – RedFilter

Respuesta

-1
public static Hashtable Fn_ConvertDataTableToHashTable(DataTable dtTable, int iRow) 
{ 
     Hashtable hshTable = new Hashtable(); 

     if (CommonUtil.Fn_CheckDatatableHasValue(dtTable)) 
     { 
      foreach (DataColumn column in dtTable.Columns) 
      { 

       hshTable.Add(column.ColumnName, dtTable.Rows[iRow][column.ColumnName].ToString()); 
      } 
     } 

     return hshTable; 
} 
0

Usted puede usar la siguiente función para convertir DataTable a 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;  
} 

Luego, en su código sólo tiene que utilizar,

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