C#中DataSet转化为实体集合类的方法
本文实例讲述了c#中dataset转化为实体集合类的方法,分享给大家供大家参考。具体实现方法如下:
/// dataset转换为实体类
/// </summary>
/// <typeparam name="t">实体类</typeparam>
/// <param name="p_dataset">dataset</param>
/// <param name="p_tableindex">待转换数据表索引</param>
/// <returns>实体类</returns>
public static t datasettoentity<t>(dataset p_dataset, int p_tableindex)
{
if (p_dataset == null || p_dataset.tables.count < 0)
return default(t);
if (p_tableindex > p_dataset.tables.count - 1)
return default(t);
if (p_tableindex < 0)
p_tableindex = 0;
if (p_dataset.tables[p_tableindex].rows.count <= 0)
return default(t);
datarow p_data = p_dataset.tables[p_tableindex].rows[0];
// 返回值初始化
t _t = (t)activator.createinstance(typeof(t));
propertyinfo[] propertys = _t.gettype().getproperties();
foreach (propertyinfo pi in propertys)
{
if (p_dataset.tables[p_tableindex].columns.indexof(pi.name.toupper()) != -1 && p_data[pi.name.toupper()] != dbnull.value)
{
pi.setvalue(_t, p_data[pi.name.toupper()], null);
}
else
{
pi.setvalue(_t, null, null);
}
}
return _t;
}
/// <summary>
/// dataset转换为实体列表
/// </summary>
/// <typeparam name="t">实体类</typeparam>
/// <param name="p_dataset">dataset</param>
/// <param name="p_tableindex">待转换数据表索引</param>
/// <returns>实体类列表</returns>
public static ilist<t> datasettoentitylist<t>(dataset p_dataset, int p_tableindex)
{
if (p_dataset == null || p_dataset.tables.count < 0)
return default(ilist<t>);
if (p_tableindex > p_dataset.tables.count - 1)
return default(ilist<t>);
if (p_tableindex < 0)
p_tableindex = 0;
if (p_dataset.tables[p_tableindex].rows.count <= 0)
return default(ilist<t>);
datatable p_data = p_dataset.tables[p_tableindex];
// 返回值初始化
ilist<t> result = new list<t>();
for (int j = 0; j < p_data.rows.count; j++)
{
t _t = (t)activator.createinstance(typeof(t));
propertyinfo[] propertys = _t.gettype().getproperties();
foreach (propertyinfo pi in propertys)
{
if (p_data.columns.indexof(pi.name.toupper()) != -1 && p_data.rows[j][pi.name.toupper()] != dbnull.value)
{
pi.setvalue(_t, p_data.rows[j][pi.name.toupper()], null);
}
else
{
pi.setvalue(_t, null, null);
}
}
result.add(_t);
}
return result;
}
希望本文所述对大家的c#程序设计有所帮助。