评论

收藏

[C++] IList转化为Dataset C#

编程语言 编程语言 发布于:2021-07-31 15:52 | 阅读数:382 | 评论:0

概述:
在用Nhibernate查询所返回的数据为IList,而我们经常需要的却是DataSet,所以很有必要这么一个方法.
代码:  
/**/
    /// <summary>  
    /// 实现对IList到DataSet的转换   
    /// </summary>  
    /// <param name="list">待转换的IList</param>  
    /// <returns>转换后的DataSet</returns>  
    public static DataSet ListToDataSet(IList list)
    {
      DataSet ds = new DataSet();
      DataTable dt = new DataTable();

      //此处遍历IList的结构并建立同样的DataTable   
      System.Reflection.PropertyInfo[] p = list[0].GetType().GetProperties();
      foreach (System.Reflection.PropertyInfo pi in p)
      {
        dt.Columns.Add(pi.Name, System.Type.GetType(pi.PropertyType.ToString()));
      }

      for (int i = 0; i < list.Count; i++)
      {
        ArrayList arrayList = new ArrayList();
        //将IList中的一条记录写入ArrayList   
        foreach (System.Reflection.PropertyInfo pi in p)
        {
          object obj = pi.GetValue(list[i], null);
          arrayList.Add(obj);
        }

        object[] item = new object[p.Length];
        //遍历ArrayList向object[]里放数据   
        for (int j = 0; j < arrayList.Count; j++)
        {
          item.SetValue(arrayList[j], j);
        }
        //将object[]的内容放入DataTable   
        dt.LoadDataRow(item, true);
      }
      //将DateTable放入DataSet   
      ds.Tables.Add(dt);

      //返回DataSet   
      return ds;
    }

关注下面的标签,发现更多相似文章