DataTable和List互转

list转datatable
public DataTable ListToDt<T>(IEnumerable<T> 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转list

public class DtToList<T> where T : new() 
{
  public static List<T> ConvertToModel(DataTable dt)
  {

    List<T> ts = new List<T>();// 定义集合

    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;
        if (dt.Columns.Contains(tempName))
        {
          if (!pi.CanWrite) continue;
            object value = dr[tempName];
          if (value != DBNull.Value)
            pi.SetValue(t, value, null);
        }
      }
      ts.Add(t);
    }
    return ts;
  }
}

posted @ 2018-08-28 13:27  GU天乐乐乐!  阅读(106)  评论(0编辑  收藏  举报