datatable to list 方法转换

#region 实体转换

        /// <summary>
        /// add extension method for datable
        /// </summary>
        /// <param name="dt"></param>
        /// <returns></returns>
        public static IList<TEntity> ToList<TEntity>(this DataTable dt) where TEntity : class ,new() {
            return ConvertToModel<TEntity>(dt);
        }
        public static IList<TEntity> ConvertToModel<TEntity>(DataTable dt) where TEntity : class ,new() {
            // 定义集合
            IList<TEntity> ts = new List<TEntity>();

            // 获得此模型的类型
            Type type = typeof(T);
            string tempName = "";

            foreach (DataRow dr in dt.Rows) {
                TEntity t = new TEntity();
                // 获得此模型的公共属性
                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;
        }

        #endregion
时间: 2024-10-12 04:50:10

datatable to list 方法转换的相关文章

C# CreateDataAdapter 创建 DbDataAdapter,以及用DataTable的Load方法获取数据

ADO.NET中 有了DbConnection,就可用DbConnection的CreateCommand 创建DbCommand,BeginTransaction创建DbTransaction 可以十分方便的实现工厂模式,操作不同的数据库. 但是唯独DbDataAdapter这个重要的对象无法通过DbConnection或DbCommand来创建,也无法实例化,必须使用SqlDataReader这种明确的类来创建实例,导致 获取数据 的方法不能在基类实现 以下是两个解决办法: 1.只有我们自己

C# Datatable导出Excel方法

C# 导出Excel方法  先引用下System.IO;System.data; 具体函数如下: 1 public static bool ExportCSV(DataTable dt, string fileNmae) 2 { 3 bool Msg = false; 4 string con = ""; 5 foreach (DataColumn dc in dt.Columns) 6 { 7 con += dc.ColumnName + ","; 8 } 9 c

C# DataTable的Select()方法不支持 != 判断

异常描述: 用户代码未处理 System.Data.SyntaxErrorExceptionHResult=-2146232032Message=无法解释位置 23 的标记“!”.Source=System.DataStackTrace:在 System.Data.ExpressionParser.Scan()在 System.Data.ExpressionParser.Parse()在 System.Data.DataExpression..ctor(DataTable table, Stri

json转datatable(正则表达式的方法)

/// <summary> /// 将json转换为DataTable /// </summary> /// <param name="strJson">得到的json</param> /// <returns></returns> private DataTable JsonToDataTable(string strJson) { //转换json格式 strJson = strJson.Replace(&qu

DataTable 使用Select方法查询并排序,以及【拼接转义符的问题】

关于DataTable 里面用 /转义符拼接的问题 //这种写法表面上是正确,实现上在运行时调用Select方法实行查询会报错 string str = resetstrWhere + "\"" + "," + "\"" + dataQuery.DefaultOrderByClause; table = table.Select(str).CopyToDataTable(); //这种写法表面上是正确,实现上在运行时调用Sel

C#中datatable去重的方法

这篇文章主要介绍了C#中datatable去重的方法,通过两种不同的方法对比分析了datatable去重的技巧,非常具有实用价值,需要的朋友可以参考下 这里主要介绍两种方法: 1  数据库直接去除重复 select  distinct * from 表名 2 对 DataTable直接进行操作 DataTable dt=db.GetDt("select * from 表名");//获得datatable DataView dv = new DataView(dt);//虚拟视图吧,我这

C# DataSet 的getXML()方法转换获得的XML字符串,数字开头,包含其他特殊字符时的处理

C# DataSet 的getXML()方法转换获得的XML字符串,数字开头,包含其他特殊字符时的会给转义成以"_x00"开头,"_"结尾的16进制的ascii码.  导致前台与Grid++Report的前面的数据列的绑定不一致了,所以,就要进行单独处理. 将Grid++Report前台的字段名称,也按照这种方式进行编码,使之匹配上. 编码方法如下.中文和英文不编码,其余字符串都以编码表示字段列. internal string EnCode16ASI(string

javaScript中eval()方法转换json对象

原文:javaScript中eval()方法转换json对象 <script language="javascript"> var user = '{name:"张三",age:23,'+ 'address:{city:"青岛",zip:"266071"},'+ 'email:"[email protected]",'+ 'showInfo:function(){'+ 'document.wri

C#中DataTable删除行的方法分析

本文实例讲述了C#中DataTable删除行的方法,分享给大家供大家参考之用.具体实现方法如下: 自己的删除例子(drTemp是表,gvSummary是dev 的gridview.单击右键点击grid删除): 1.dtTemp.Rows.RemoveAt(gvSummary.FocusedRowHandle); 2.dtTemp.Rows[gvSummary.FocusedRowHandle].Delete();  dtTemp.AcceptChanges(); 在C#中,如果要删除DataTa