zoukankan      html  css  js  c++  java
  • C# 实现List和DataTable互转

    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对象);

  • 相关阅读:
    打开百度要用几步
    web渗透总结
    mysql之基本数据类型
    网络编程
    垃圾回收机制
    常用模块-hashlib,hmac,configparser,subprocess,xlrd,xlwt,xml,re
    常用模块-random,shutil,shevle,logging
    文件操作
    元组、字典、集合数据类型
    基本数据类型之列表类型
  • 原文地址:https://www.cnblogs.com/selenazhou/p/13347719.html
Copyright © 2011-2022 走看看