2010-04-16 78 views
6

Có cách nào dễ dàng để chuyển đổi DataTable thành HashTable hoặc SQLDataReader thành HashTable? Tôi phải phân tích nó thông qua javascriptserializer. Mã tôi đang sử dụng có một số vấn đề:Cách dễ dàng để chuyển đổi bảng dữ liệu thành bảng băm hoặc sqldatareader thành 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; 
} 

Kết quả chính xác khi được truy vấn từ một bảng trong cơ sở dữ liệu nhưng từ một bảng khác có vấn đề.

Có cách nào khác để thực hiện việc này không?

+3

Hãy mô tả những vấn đề này, với thông báo lỗi chính xác. – RedFilter

Trả lời

-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

Bạn có thể sử dụng chức năng sau đây để chuyển đổi 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;  
} 

Sau đó, trong mã của bạn chỉ cần sử dụng,

Hashtable sendData = new Hashtable(); 
//You need to pass datatable, key field and value field 
sendData = convertDataTableToHashTable(dt, "orderNumber", "customerName"); 
Các vấn đề liên quan