当前位置: 移动技术网 > IT编程>开发语言>c# > C#中DataSet转化为实体集合类的方法

C#中DataSet转化为实体集合类的方法

2019年07月18日  | 移动技术网IT编程  | 我要评论

本文实例讲述了c#中dataset转化为实体集合类的方法,分享给大家供大家参考。具体实现方法如下:

复制代码 代码如下:
/// <summary>
/// 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#程序设计有所帮助。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网