方法一:

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

datatable 转list ,list转datatable的更多相关文章

  1. c# datarow[] 转换成 datatable, List<T> 转datatable

      c# datarow[] 转换成 datatable, List<T> 转datatable DdataRow[]转成Datatable private DataTable ToDat ...

  2. DataTable转Json,Json转DataTable

    // 页面加载时 /// </summary> /// <param name="sender"></param> /// <param ...

  3. DataTable 怎样设置列宽? DataTable中已经有数据了怎样在现实的时候设置它的列宽?

    首先要理解 DataTable是一个虚拟表,里面存有数据列,既然是虚拟的就不能够为它去设置宽度,如果设置的话可以对其绑定的控件进行设置.例如:绑定的控件对象为DataGridView那么可以这样 da ...

  4. 一个DataTable赋值给另一个DataTable的常用方法

    DataView view = new DataView();view.Table = DataTableA;view.RowFilter = "itemType = 'book'" ...

  5. .Net 将一个DataTable分解成多个DataTable

    这两天遇到一个问题,我们所接触 的一个系统在导出数据到Excel的时候,产生了内存溢出的错误.原因在于数据过大,它导出是将所有数据存放在一个DataSet的一个表中,再将这个数 据集放入session ...

  6. ASP.NET操作DataTable各种方法总结(给Datatable添加行列、DataTable选择排序等)

      using System; using System.Collections.Generic; using System.Data; using System.Text; namespace Gz ...

  7. C#DataTable复制、C#DataTable列复制、C#DataTable字段复制

    try { //获取满足条件的数据 DataTable Mdr = datable.Select().ToString("yyyy-MM-dd HH:mm:ss") + " ...

  8. linq 将datatable分组求和在转datatable

    DataTable dt = new DataTable(); dt.Columns.Add("CustomerID"); dt.Columns.Add("aa" ...

  9. (转)在JAVA实现DataTable对象(三)——DataTable对象实现

    大家都是行家,我就直接上代码了,我这个代码应该还是能看懂的,嘻嘻…. 1: import java.util.ArrayList; 2: import java.util.List; 3:   6: ...

随机推荐

  1. 前端-----JavaScript 初识基础

    JavaScript的组成 JavaScript基础分为三个部分: ECMAScript:JavaScript的语法标准.包括变量.表达式.运算符.函数.if语句.for语句等. DOM:操作网页上的 ...

  2. selenium之css定位小结

    前言 大部分人在使用selenium定位元素时,用的是xpath定位,因为xpath基本能解决定位的需求.css定位往往被忽略掉了,其实css定位也有它的价值,css定位更快,语法更简洁.这一篇css ...

  3. Python-面向对象(组合、封装与多态)

    一.组合 什么是组合? 就是一个类的属性 的类型 是另一个自定义类的 类型,也可以说是某一个对象拥有一个属性,该属性的值是另一个类的对象. 通过为某一个对象添加属性(这里的属性是另一个类的对象)的方式 ...

  4. Android瀑布流优化,解决Recyclerview展示大批量图片时Item自动切换、闪烁、空白等问题

    本文涉及的代码案例可以在下方的链接中找到,如果对你有帮助,请给个Star(#^.^#) https://github.com/CodeTillDoom/StaggeredRcl 问题分析 这段时间业务 ...

  5. Android之androidmainfest.xml配置文件详解

    写配置文件的时候我们会不知道把那些配置项放在哪里,请看: 配置文件样例: <?xml version="1.0" encoding="utf-8"?> ...

  6. Android 各种路径详细说明

    存储分类: 内部存储路径, 内部缓存存储路径, 外部存储路径, 外部缓存存储路径 在有些手机上内部划出一个内部的sdcard路径和内部存储路径,当有sdcard时候,就有了六个路径 内部存储空间中的应 ...

  7. Math中的floor,round和ceil方法总结

    floor向下取整,返回不大于的最大整数  Math.floor(1.4)=1.0ceil向上取整,返回不小于的最小整数  Math.ceil(1.4)=2.0round 四舍五入,将原来的数字加入0 ...

  8. Java、Apache Tomcat下载与安装及环境变量配置

    1.Java JDK 与 Apache Tomcat 下载 JDK 下载 Apache Tomcat 下载 2.安装与环境变量配置 关于 JDK 的安装挺简单的,网上教程也挺多,Tomcat 下载免安 ...

  9. 关于vue的基础概念

    vue-cli相当于脚手架 给你自动生成模板工程vue-router是 vue路由插件 支持你单页应用的vue-loader是webpack下loader插件 可以把.vue文件 输出成组件

  10. mongodb 数据库中 的聚合操作