首页 > 其他分享 >datatable 转list

datatable 转list

时间:2022-11-25 17:02:59浏览次数:51  
标签:list List System DataTable TResult new using datatable


C# DataTable 转 List 方法,网上有好多,之前也收集了,感觉这个也不错,重要是自己要领会这里面的代码含义。

接不来我就把代码贴出来分享一下,大家觉得如果不好,请留言我,我来改进。

using System;
using System.Collections.Generic;
using System.Data;
using System.Reflection;

namespace jdrz.HumanIdentify
{
    public class Helper
    {

        /// <summary>
        /// DataTable 转换为List 集合
        /// </summary>
        /// <typeparam name="TResult">类型</typeparam>
        /// <param name="dt">DataTable</param>
        /// <returns></returns>
        public static List<TResult> ToList<TResult>(DataTable dt) where TResult : class, new()
        {
            //创建一个属性的列表
            var prlist = new List<PropertyInfo>();
            //获取TResult的类型实例  反射的入口
            var t = typeof(TResult);
            //获得TResult 的所有的Public 属性 并找出TResult属性和DataTable的列名称相同的属性(PropertyInfo) 并加入到属性列表
            Array.ForEach(t.GetProperties(), p => { if (dt.Columns.IndexOf(p.Name) != -1) prlist.Add(p); });
            //创建返回的集合
            var oblist = new List<TResult>();

            foreach (DataRow row in dt.Rows)
            {
                //创建TResult的实例
                var ob = new TResult();
                //找到对应的数据  并赋值
                prlist.ForEach(p => { if (row[p.Name] != DBNull.Value) p.SetValue(ob, row[p.Name], null); });
                //放入到返回的集合中.
                oblist.Add(ob);
            }
            return oblist;
        }
    }
}
 

 

总结一下:

其实我想重写下Ado.net ,因为之前我们公司用的都是直接dataset to datatable ,现在发现 to list更方便(不知道大家有没有这种感觉),

我自己用的是Nhibernate,所以基于公司内部的话,我想再写个Ado.net 转换数据的dll,最后我想说的是,大家在公司里都是用什么开发的?

ado.net?nhibernate?Elinq?entityframework?希望大家一起讨论讨论!

标签:list,List,System,DataTable,TResult,new,using,datatable
From: https://blog.51cto.com/u_15834343/5887051

相关文章

  • Redis 数据类型list、hash、zset 原理、使用场景说明
    面试中常会被问到Redis的数据类型用过哪些,被问的多了就想整理一下,以被下次再被问时可以很好的回复,现在对redis中list、hash、zset进行梳理。一、listRedislist的实现......
  • 【Android游戏开发二十三】自定义ListView【通用】适配器并实现监听控件!
    ​​ 李华明Himi ​​​原创,转载务必在明显处注明​ ListView:在Android应用开发过程中属于最常用的系统组件之一,当然可能童鞋们问为什么会突然游戏开发中讲这个,呵呵,其......
  • Java中List同ArrayList有什么不同呢?
    转自:http://www.java265.com/JavaProblem/202110/1415.html下文笔者讲述使用java代码常见的List和ArrayList的不同之处,如下所示:不同之处:一、两者压根都不是一个......
  • Java ArrayList移除元素相关
    @TestpublicvoidtestList(){List<String>list=newArrayList<>();list.add("1");list.add("2");for(Strings:lis......
  • VirtualInbound Listener
    入向流量的相关过滤器匹配条件及流量处理机制[root@master~]#istioctlpclistenerssleep-78ff5975c6-75q5z--port15006ADDRESSPORTMATCH......
  • Istio-proxy容器及Listener
    istio-proxy即所谓的sidecar容器,它运行两个进程  pilot-agent    基于k8sapiserver为envoy初始化出可用的boostrap配置文件并启动envoy;    监控并管理......
  • 超级好用的仿recycleview的listview适配器与viewholder封装
    由于公司项目频繁使用适配器,于是就使用java牛逼的泛型写了这和Recycleviwew那样的设计架构的lsitviewadapter超级好用的仿recycleview的listview适配器与viewholder+java......
  • java集合对List进行排序
    List排序4种写法方式1:JAVA中我们可以使用java.util.Collections类的sort(Listlist)方法对list集合中的元素排序。方式2:JDK8之后特别是lambda表达式的盛行,而且Collec......
  • python_list列表
     列表list关键字in和notin用来判断元素是否包含在列表list中,str也能使用list_city01=["北京","北京","杭州"]#判断数据在列表中print("北京"inlist_ci......
  • Lamdba及DataTable AsEnumerable()的使用
    1.Where语句使用varvar_dtTable=dtTable.AsEnumerable().Where<DataRow>(W=>W["NAME"].ToString()=="张三");intcount=var_dtTable.Count<DataRow>();//获取d......