码迷,mamicode.com
首页 > Windows程序 > 详细

C# 实现List和DataTable互转

时间:2020-07-21 01:18:27      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:for   dbnull   cti   str   static   public   row   listt   oda   

1.DataTable转List
// 实体转换辅助类 datatable to list
public class ModelConvertHelper where T : new()
{
public static List ConvertToModel(DataTable dt)
{
// 定义集合
List ts = new List();
// 获得此模型的类型
Type type = typeof(T);
string tempName = "";
foreach (DataRow dr in dt.Rows)
{
T t = new T();
// 获得此模型的公共属性
PropertyInfo[] propertys = t.GetType().GetProperties();
foreach (PropertyInfo pi in propertys)
{
tempName = pi.Name; // 检查DataTable是否包含此列
if (dt.Columns.Contains(tempName))
{
// 判断此属性是否有Setter
if (!pi.CanWrite) continue;
object value = dr[tempName];
if (value != DBNull.Value)
pi.SetValue(t, value, null);
}
}
ts.Add(t);
}
return ts;
}
}

调用示例:
List Userlist = ModelConvertHelper.ConvertToModel(DataTable对象);

2.List转DataTable
// list to datatable
public static DataTable ListToDatatable(IEnumerable collection)
{
var props = typeof(T).GetProperties();
var dt = new DataTable();
dt.Columns.AddRange(props.Select(p => new
DataColumn(p.Name, p.PropertyType)).ToArray());
if (collection.Count() > 0)
{
for (int i = 0; i < collection.Count(); i++)
{
ArrayList tempList = new ArrayList();
foreach (PropertyInfo pi in props)
{
object obj = pi.GetValue(collection.ElementAt(i), null);
tempList.Add(obj);
}
object[] array = tempList.ToArray();
dt.LoadDataRow(array, true);
}
}
return dt;
}
调用示例:
DataTable dtUser = ListToDatatable(List对象);

C# 实现List和DataTable互转

标签:for   dbnull   cti   str   static   public   row   listt   oda   

原文地址:https://www.cnblogs.com/selenazhou/p/13347719.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!