• datatable 转list ,list转datatable


    方法一:

     public static IList<T> ConvertToModel(DataTable dt)   

             {   
                // 定义集合   
                 IList<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;  // 检查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;    
             }    
         }   
    方法二:

    var query = from t in dt.AsEnumerable().ToList()
    group t by new { t1 = t.Field<string>("CustomerID") } into m
    select new
    {
    name = m.Key.t1,
    score = m.Sum(n => n.Field<Int32>("aa")),
    ss = m.Sum(n => n.Field<Int32>("vv"))
    };

    list转table:

    方法一:

     DataTable dt22= ToDataTable(query.Where(p=>1==1));

    public static DataTable ToDataTable<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;
    }

  • 相关阅读:
    Unix系统中system函数的返回值
    vim 插件 for gbasic
    arch初认识
    TI IPNC Web网页之进阶修改
    Ti IPNC Web网页之ActiveX控件
    TI IPNC Web网页之网页修改教程
    OI,再见
    [OI]省选前模板整理
    OI刷题录——hahalidaxin
    51nod 小Z的trie(Trie+广义SAM)
  • 原文地址:https://www.cnblogs.com/zhang-wenbin/p/8606944.html
Copyright © 2020-2023  润新知