using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using System.Text;
|
using System.Data;
|
using System.Runtime.Serialization.Formatters.Binary;
|
using System.Reflection;
|
|
namespace BatchService.Framework.Utility
|
{
|
public class EntityConverter
|
{
|
/// <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)
|
{
|
try
|
{
|
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);
|
}
|
}
|
catch (Exception ex)
|
{
|
LogHelper.Error(pi.Name + "," + p_Data[pi.Name.ToUpper()] + "," + ex.ToString());
|
}
|
}
|
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;
|
}
|
|
//dataset转实体类
|
public static IList<T> FillModel<T>(DataSet ds)
|
{
|
List<T> l = new List<T>();
|
T model = default(T);
|
|
if (ds.Tables[0].Columns[0].ColumnName == "rowId")
|
{
|
ds.Tables[0].Columns.Remove("rowId");
|
}
|
foreach (DataRow dr in ds.Tables[0].Rows)
|
{
|
|
|
model = Activator.CreateInstance<T>();
|
|
foreach (DataColumn dc in dr.Table.Columns)
|
{
|
|
PropertyInfo pi = model.GetType().GetProperty(dc.ColumnName);
|
if (dr[dc.ColumnName] != DBNull.Value)
|
pi.SetValue(model, dr[dc.ColumnName], null);
|
else
|
pi.SetValue(model, null, null);
|
|
}
|
l.Add(model);
|
}
|
return l;
|
}
|
|
}
|
}
|