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

 更新时间:2014年10月28日 16:06:52   投稿:shichen2014  
这篇文章主要介绍了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#程序设计有所帮助。

相关文章

  • Winform 显示Gif图片的实例代码

    Winform 显示Gif图片的实例代码

    这篇文章主要介绍了Winform 显示Gif图片的实例代码,有需要的朋友可以参考一下
    2014-01-01
  • asp.net core 使用 tensorflowjs实现 face recognition的源代码

    asp.net core 使用 tensorflowjs实现 face recognition的源代码

    tensorflowjs,在该项目中使用了ml5js这个封装过的机器学习JavaScript类库, 使用起来更简单,本文给大家分享asp.net core 使用 tensorflowjs实现 face recognition的源代码,需要的朋友参考下吧
    2021-06-06
  • C#/VB.NET 实现彩色PDF转为灰度PDF

    C#/VB.NET 实现彩色PDF转为灰度PDF

    本文以C#代码为例介绍如何实现将彩色PDF文件转为灰度(黑白)的PDF文件,即将PDF文档里面的彩色图片或者文字等通过调用方法转为文档页面为灰色调、无彩色效果的文档。快来跟随小编一起学习吧
    2021-11-11
  • C#自定义控件指示灯效果

    C#自定义控件指示灯效果

    在C#中实现一个指示灯控件,可以通过GDI+技术绘制,首先使用Pen对象绘制外环,然后用SolidBrush对象填充内圆,通过RectangleF定义绘制和填充的边界,控件的属性包括颜色、间隙、外环宽度等,本文给大家介绍C#自定义控件指示灯效果,感兴趣的朋友跟随小编一起看看吧
    2024-09-09
  • C#将DataGridView中的数据保存到CSV和Excel中

    C#将DataGridView中的数据保存到CSV和Excel中

    这篇文章介绍了C#将DataGridView中的数据保存到CSV和Excel中的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • C#获取文件夹所占空间大小的功能

    C#获取文件夹所占空间大小的功能

    这篇文章介绍了C#获取文件夹所占空间大小的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • C#实现更快读写超级大文件的方法详解

    C#实现更快读写超级大文件的方法详解

    这篇文章主要来和大家介绍一下C#实现更快读写超级大文件的方法,文中的示例代码简洁易懂,对我们深入了解C#有一定的帮助,快跟随小编一起学习起来吧
    2023-06-06
  • 判断一个整数是否是2的N次幂实现方法

    判断一个整数是否是2的N次幂实现方法

    下面小编就为大家分享一篇判断一个整数是否是2的N次幂实现方法,实例简洁,具有很好的参考价值。希望对大家有所帮助
    2017-11-11
  • c# WinForm制作图片编辑工具(图像拖动、缩放、旋转、抠图)

    c# WinForm制作图片编辑工具(图像拖动、缩放、旋转、抠图)

    这篇文章主要介绍了c# WinForm制作图片编辑工具(可实现图像拖动、缩放、旋转、抠图),帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下
    2021-03-03
  • C#实现解析百度天气数据,Rss解析百度新闻以及根据IP获取所在城市的方法

    C#实现解析百度天气数据,Rss解析百度新闻以及根据IP获取所在城市的方法

    这篇文章主要介绍了C#实现解析百度天气数据,Rss解析百度新闻以及根据IP获取所在城市的方法,非常具有实用价值,需要的朋友可以参考下
    2014-10-10

最新评论