[轉]利用.NET中的反射機制實現IList到DataTable的轉換

 public static DataSet ListToDataSet(IList ResList)
 {
      DataSet RDS=new DataSet();
      DataTable TempDT = new DataTable();
      //此處遍歷IList的結構並建立同樣的DataTable
      System.Reflection.PropertyInfo[] p = ResList[0].GetType().GetProperties();
      foreach (System.Reflection.PropertyInfo pi in p)
      {
           TempDT.Columns.Add(pi.Name,System.Type.GetType(pi.PropertyType.ToString()));
      }
      for (int i = 0; i < ResList.Count; i++){
           IList TempList = new ArrayList();
           //將IList中的一條記錄寫入ArrayList
           foreach (System.Reflection.PropertyInfo pi in p)
           {
                object o = pi.GetValue(ResList[i], null);
                TempList.Add(o);
           }
           object[] itm=new object[p.Length];
           //遍歷ArrayList向object[]裏放數據
           for (int j = 0; j < TempList.Count; j++)
           {
                itm.SetValue(TempList[j], j);
           }
           //將object[]的內容放入DataTable
           TempDT.LoadDataRow(itm, true);
      }
      //將DateTable放入DataSet
      RDS.Tables.Add(TempDT);
      //返回DataSet
      return RDS;
 }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章