風之力

导航

DATATABLE(DATASET)与实体类之间的互转.

dataset和实体类 之间的转换

//dataset转实体类

 

 

 

代码
public static IList<T> FillModel(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, 
nullnull);


l.Add(model); 
}

return l;


}

 

将实体类转换成DataTable

 

 

代码


/// <summary> 
/// 将实体类转换成DataTable 
/// </summary> 
/// <typeparam name="T"></typeparam> 
/// <param name="i_objlist"></param> 
/// <returns></returns> 
public static DataTable Fill<T>(IList<T> objlist) 

if (objlist == null || objlist.Count <= 0

return null

DataTable dt 
= new DataTable(typeof(T).Name); 
DataColumn column; 
DataRow row;

System.Reflection.PropertyInfo[] myPropertyInfo 
= typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);

foreach (T t in objlist) 

if (t == null

continue
}

row 
= dt.NewRow();

for (int i = 0, j = myPropertyInfo.Length; i < j; i++

System.Reflection.PropertyInfo pi 
= myPropertyInfo[i];

string name = pi.Name;

if (dt.Columns[name] == null

column 
= new DataColumn(name, pi.PropertyType); 
dt.Columns.Add(column); 
}

row[name] 
= pi.GetValue(t, null); 
}

dt.Rows.Add(row); 

return dt; 
}

 

 

posted on 2010-07-20 20:29  ZY.Zhou  阅读(981)  评论(0编辑  收藏  举报