关于List<>(实体类)泛型集合转DataTable_ONE

// 泛型集合转DataTable,T为Linq实体类

   public delegate void GetDataTableRow<T>(T t,System.Data.DataTable d);
        public static void ExcelOut2<T>(DataGrid gt, GetDataTableRow<T> GetDataTableRow)
        {    
            
            ItemCollection list= gt.Items;  //获取grid表格的源集合
            if (list.Count <= 0) { MessageBox.Show("没有需要导出的数据"); return; }//判断集合是否为空

System.Windows.Forms.SaveFileDialog saveFileDialog = new System.Windows.Forms.SaveFileDialog();
            saveFileDialog.Filter = "Excel files (*.xls)|*.xls";
            saveFileDialog.FilterIndex = 0;
            saveFileDialog.RestoreDirectory = true;
            //saveFileDialog.CreatePrompt = true;
            saveFileDialog.Title = "导出Excel文件到";
            //打开选择/创建文件对话框后取消操作
            if (saveFileDialog.ShowDialog()== System.Windows.Forms.DialogResult.Cancel)
            {
                return;
            }
            System.Data.DataTable dt = new System.Data.DataTable();//创建待传参数DataTable

for (int i = 0; i < gt.Columns.Count; i++)//待传参数DataTable新建列
            {
                dt.Columns.Add(gt.Columns[i].Header.ToString(), Type.GetType("System.String"));
            }

for (int i = 0; i < list.Count; i++)//待传参数DataTable填充内容
            {
                     T t3 = (T)list[i];
                     GetDataTableRow(t3, dt);
            }
            WzdhApp.clss_excel.ExcelIO e = new WzdhApp.clss_excel.ExcelIO();//实际调用datatable转excel工具类
            bool a = e.DataTableToExecl(dt, saveFileDialog.FileName);
            if (a == false)
            {
                MessageBox.Show("数据导出失败");
            }
            else {
                MessageBox.Show("数据导出成功");
            }
        }
     
        }

    //在程序中使用方法1

       GridToExcel.ExcelOut2<KcxxQdxx>(grid_user,(w,d)=> d.Rows.Add(new object[]{w.Wz_bh,w.Wz_Name,w.Wz_ggxh,
                  w.Fphm,w.Kc_sl,w.Kc_ksysl,w.Wz_jldw,w.Kc_dj,w.Kc_jfsl,
                  w.Kc_je,w.Rksj,w.Wz_sccj,w.Scrq,w.Wz_bzqx,w.Beizhu }));

    //在程序中使用方法2
            GridToExcel.ExcelOut2<WZ_DHMX>(grid_user, delegate(WZ_DHMX w,DataTable d) {
            DataRow dr = d.NewRow();
            dr[0] = w.Wz_Name;
            dr[1] = w.KH_DJSXJF;
            dr[2] = w.DH_SL;
            dr[3] = w.KH_XM;
            dr[4] = w.DH_KH;
            dr[5] = w.JM_SFZ;
            dr[6] = w.KH_XB;
            dr[7] = w.JM_LXDH;
            dr[8] = w.Create_Date;
            dr[9] = w.Rec_clk_name;
            d.Rows.Add(dr);
            });

时间: 2024-10-23 06:27:59

关于List<>(实体类)泛型集合转DataTable_ONE的相关文章

三层架构下带实体参数泛型集合的“传递”

看过我的三种方法实现从"一个(组)查询过程中返回两个表的查询结果"这篇博客的同学,可能大都对最后一种方法比较感兴趣.即:把查询结果放到泛型集合中,在两个将泛型集合放入另一个新的泛型集合,新集合的参数为object.(链接:http://blog.csdn.net/u010191243/article/details/38798773) D层代码: Public Function QueryCardStudentInfo(ByVal enCard As CardEntity, ByVal

使用泛型集合代替datatable作为返回值实现面向对象

开会的时候,师父说,我们在机房重构时,尽量不要用datatable作为返回值,改用泛型集合的方式,这样可以实现真正的面向对象.通过查资料和同学交流,把这个问题给解决了.对于泛型集合,我也有了一些认识. 一.对泛型集合的认识 1.存在于System.Collection,Generic的命名空间中,在用的时候,需要引用 2.泛型是具有占位符(类型参数)的类,结构,接口和方法.就是说,在泛型集合中加入的数据必须符合指定的类型<T>,否则编译时就会报错. 以上为设计模式培训实习生的内容. 那泛型集合

泛型集合排序,根据实体类对象的某个属性排序

import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.lang.reflect.Method; import java.lang.reflect.InvocationTargetException; import sy.model.aite.analysis.SelfTestAnalysis; /** * 泛

ADO面向对象使用(实体类、数据访问类、范型集合)

ADO面向对象使用: !!!!!在其它文件夹下创建新类,加public!再考虑是不是引用数据库命名空间和其它类的命名空间!是否需要将构造函数写出来,将数据库的两个类实例化!!!!! 实体类:就是封装,将数据库中的表封装成同名的类,里面的成员变量与表里面的列是对应的,一个对象就代表数据库中一行数据: 字段扩展:查询关联的外键表数据,只读! 数据访问类:就是对于实体类对应的数据库进行操作的,就是写方法! 泛型集合: List<T> list = new List<T>(); T代表的就

ado数据模型和数据访问类,泛型集合

using System; using System.Collections.Generic; using System.Linq; using System.Text; using 实体类_数据访问类_泛型集合.moxing;//引用命名空间 using 实体类_数据访问类_泛型集合.shujucaozuo; namespace 实体类_数据访问类_泛型集合 { class Program { static void Main(string[] args) { List<car> data

泛型,JDK5新特性,List集合子实现类,Map集合,Set/TreeSet集合,asList

一.泛型(JDK5以后新特性) 1.概述:泛型直接规定集合的存储类型,将明确的集合类型的工作推迟到了创建对象或者调用方法的时候,属于一种参数化类型,可作参数传递.2.优点(1)将运行时期异常提前到了编译时期:(2)优化了设计,解决了×××警告线问题:(3)避免了强制类型转换, ,解决了向下类型转换出现的问题ClassCastException:(4)泛型的引出可以提供程序的安全性.3.泛型定义在类上(1)格式:public class 类名<T>{--}(2)实例:实体类: 测试类: 4.泛型

数据模型和数据访问类以及属性扩展和泛型集合

数据模型: 数据模型就是将一个表中一行的所有属性利用封装写到一个类里面,将数据表中的行数据组成一个同样结构的对象,方便使用. 1 public class Car 2 { 3 SqlConnection conn = null; 4 SqlCommand com = null; 5 public Car() 6 { 7 conn = new SqlConnection("server=.;database=ADOlianxi0425;user=sa;pwd=123;"); 8 com

ADO.Net创建数据模型和数据访问类及泛型集合

数据模型和数据访问类:数据模型: 使用面向对象中的封装特性,将数据表中的行数据组成一个同样结构的对象,来单独使用: 数据访问类: 将某一个表的全部增删改查操作的方法写进去,方便统一管理和调用: 数据模型和数据访问类单独创建两个文件件单独放置,方便查看:注意:单独创建的问题件命名空间会自动更改,调用时需要引用命名空间,并且在创建类时第一步要把类的访问权限设置为公开的 创建一个数据库模型和一个数据库访问类,对学生信息表进行简单的操作 数据库信息表: create database netlx go

Sort方法根据T类某个字段对泛型集合List&lt;T&gt;排序

实现:采用Sort方法根据T类某个字段对泛型集合List<T>排序. 实现代码如下: static void Main(string[] args) { List<Stud> studs = new List<Stud>() { new Stud() { Name = "B", Score = 80 }, new Stud() { Name = "C", Score = 30 }, new Stud() { Name = &quo