[转]利用.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;
 }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章