mirror of
https://github.com/jie65535/Helpers.git
synced 2025-10-16 17:29:45 +08:00
Add DataTable <=> Model Convert Helper
This commit is contained in:
153
DataHelper/ModelHandler.cs
Normal file
153
DataHelper/ModelHandler.cs
Normal file
@@ -0,0 +1,153 @@
|
||||
/// <summary>
|
||||
/// DataTable<6C><65>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><E0BBA5>ת<EFBFBD><D7AA>
|
||||
/// </summary>
|
||||
/// <typeparam name="T">ʵ<><CAB5><EFBFBD><EFBFBD></typeparam>
|
||||
public class ModelHandler<T> where T : new()
|
||||
{
|
||||
#region DataTableת<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
/// <summary>
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>DataSet<65>ĵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>
|
||||
/// </summary>
|
||||
/// <param name="ds">DataSet</param>
|
||||
/// <returns></returns>
|
||||
public List<T> FillModel(DataSet ds)
|
||||
{
|
||||
if (ds == null || ds.Tables[0] == null || ds.Tables[0].Rows.Count == 0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
else
|
||||
{
|
||||
return FillModel(ds.Tables[0]);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>DataSet<65>ĵ<EFBFBD>index<65><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>
|
||||
/// </summary>
|
||||
public List<T> FillModel(DataSet ds, int index)
|
||||
{
|
||||
if (ds == null || ds.Tables.Count <= index || ds.Tables[index].Rows.Count == 0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
else
|
||||
{
|
||||
return FillModel(ds.Tables[index]);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>DataTable<6C><65><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>
|
||||
/// </summary>
|
||||
public List<T> FillModel(DataTable dt)
|
||||
{
|
||||
if (dt == null || dt.Rows.Count == 0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
List<T> modelList = new List<T>();
|
||||
foreach (DataRow dr in dt.Rows)
|
||||
{
|
||||
//T model = (T)Activator.CreateInstance(typeof(T));
|
||||
T model = new T();
|
||||
for (int i = 0; i < dr.Table.Columns.Count; i++)
|
||||
{
|
||||
PropertyInfo propertyInfo = model.GetType().GetProperty(dr.Table.Columns[i].ColumnName);
|
||||
if (propertyInfo != null && dr[i] != DBNull.Value)
|
||||
propertyInfo.SetValue(model, dr[i], null);
|
||||
}
|
||||
|
||||
modelList.Add(model);
|
||||
}
|
||||
return modelList;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DataRow<6F><77><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>
|
||||
/// </summary>
|
||||
public T FillModel(DataRow dr)
|
||||
{
|
||||
if (dr == null)
|
||||
{
|
||||
return default(T);
|
||||
}
|
||||
|
||||
//T model = (T)Activator.CreateInstance(typeof(T));
|
||||
T model = new T();
|
||||
|
||||
for (int i = 0; i < dr.Table.Columns.Count; i++)
|
||||
{
|
||||
PropertyInfo propertyInfo = model.GetType().GetProperty(dr.Table.Columns[i].ColumnName);
|
||||
if (propertyInfo != null && dr[i] != DBNull.Value)
|
||||
propertyInfo.SetValue(model,dr[i],null);
|
||||
}
|
||||
return model;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD>DataTable
|
||||
|
||||
/// <summary>
|
||||
/// ʵ<><CAB5><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>DataSet
|
||||
/// </summary>
|
||||
/// <param name="modelList">ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD></param>
|
||||
/// <returns></returns>
|
||||
public DataSet FillDataSet(List<T> modelList)
|
||||
{
|
||||
if (modelList == null || modelList.Count == 0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
else
|
||||
{
|
||||
DataSet ds = new DataSet();
|
||||
ds.Tables.Add(FillDataTable(modelList));
|
||||
return ds;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// ʵ<><CAB5><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>DataTable
|
||||
/// </summary>
|
||||
/// <param name="modelList">ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD></param>
|
||||
/// <returns></returns>
|
||||
public DataTable FillDataTable(List<T> modelList)
|
||||
{
|
||||
if (modelList == null || modelList.Count == 0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
DataTable dt = CreateData(modelList[0]);
|
||||
|
||||
foreach(T model in modelList)
|
||||
{
|
||||
DataRow dataRow = dt.NewRow();
|
||||
foreach (PropertyInfo propertyInfo in typeof(T).GetProperties())
|
||||
{
|
||||
dataRow[propertyInfo.Name] = propertyInfo.GetValue(model, null);
|
||||
}
|
||||
dt.Rows.Add(dataRow);
|
||||
}
|
||||
return dt;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ṹ
|
||||
/// </summary>
|
||||
/// <param name="model">ʵ<><CAB5><EFBFBD><EFBFBD></param>
|
||||
/// <returns></returns>
|
||||
private DataTable CreateData(T model)
|
||||
{
|
||||
DataTable dataTable = new DataTable(typeof (T).Name);
|
||||
foreach (PropertyInfo propertyInfo in typeof(T).GetProperties())
|
||||
{
|
||||
dataTable.Columns.Add(new DataColumn(propertyInfo.Name, propertyInfo.PropertyType));
|
||||
}
|
||||
return dataTable;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
Reference in New Issue
Block a user