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

2019-12-26 12:04:21于丽
易采站长站为您分析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>);