IList转化为Dataset C#
概述:在用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.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, null);
arrayList.Add(obj);
}
object[] item = new object;
//遍历ArrayList向object[]里放数据
for (int j = 0; j < arrayList.Count; j++)
{
item.SetValue(arrayList, j);
}
//将object[]的内容放入DataTable
dt.LoadDataRow(item, true);
}
//将DateTable放入DataSet
ds.Tables.Add(dt);
//返回DataSet
return ds;
}
文档来源:51CTO技术博客https://blog.51cto.com/u_6555766/3240802
页:
[1]