方法一:

 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;
}

最新文章

  1. java多线程--信号量Semaphore的使用
  2. 30天React Native从零到IOS/Android双平台发布总结
  3. Opera Browser -- Access Restricted Sites using Free VPN /Free VPN Services List
  4. Web Compiler
  5. 模拟jquery
  6. 【原】从/dev/null重新打开标准输出
  7. Chapter 17 Replication
  8. css3盒模型学习--利用box自适应布局
  9. python nonloacal
  10. java mongodb连接配置实践——生产环境最优
  11. myeclipse无法部署项目的解决
  12. SpringDataJpa学习
  13. shiroWeb项目-记住我(自动登陆实现)(十五)
  14. (个人)Zookeeper集群环境部署
  15. socket 进阶
  16. Ionic Js七:手势事件
  17. 〖Linux〗VIM youcompleteme 自动补全 #include 文件名称
  18. TCP通信的三次握手和四次撒手的详细流程(顿悟)
  19. MVC4实现AJAX需要引用的2个文件
  20. Python之路【第五篇】: 函数、闭包、装饰器、迭代器、生成器

热门文章

  1. 搭建基于IDEA+Selenium+Java+TestNG+Maven+Jenkins+SVN的Web端UI自动化测试环境
  2. 23)django-缓存
  3. 解决Navicat连接MySQL总是报错1251的方法
  4. Oracle11g 启动数据库实例、关闭数据库实例
  5. Confluence 6 使用 Fail2Ban 来限制登录尝试
  6. sublime c++
  7. openmp
  8. Python学习【第2篇】:Python数据结构
  9. Vue 导入文件import、路径@和.的区别
  10. java获取当前时间精确到毫秒