欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-12-15 17:52:28
本文实例讲述了c#中dataset转化为实体集合类的方法,分享给大家供大家参考。具体实现方法如下: 复制代码 代码如下:/// ///...

本文实例讲述了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#程序设计有所帮助。

上一篇:

下一篇: