list,泛型和datatable的相互转换

zhoudidi zhoudidi     2022-10-08     404

关键词:

  public static DataTable ToDataTableTow(IList list)
        {
            DataTable result = new DataTable();
            if (list.Count > 0)
            {
                PropertyInfo[] propertys = list[0].GetType().GetProperties();

                foreach (PropertyInfo pi in propertys)
                {
                    result.Columns.Add(pi.Name, pi.PropertyType);
                }
                for (int i = 0; i < list.Count; i++)
                {
                    ArrayList tempList = new ArrayList();
                    foreach (PropertyInfo pi in propertys)
                    {
                        object obj = pi.GetValue(list[i], null);
                        tempList.Add(obj);
                    }
                    object[] array = tempList.ToArray();
                    result.LoadDataRow(array, true);
                }
            }
            return result;
        }
        /// <summary>
        /// 泛型转换list
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="list"></param>
        /// <returns></returns>
        public static DataTable ToDataTable<T>(IList<T> list)
        {
            return ToDataTable<T>(list, null);

        }


        /// <summary>    
        /// 将泛型集合类转换成DataTable    
        /// </summary>    
        /// <typeparam name="T">集合项类型</typeparam>    
        /// <param name="list">集合</param>    
        /// <param name="propertyName">需要返回的列的列名</param>    
        /// <returns>数据集(表)</returns>    
        public static DataTable ToDataTable<T>(IList<T> list, params string[] propertyName)
        {
            List<string> propertyNameList = new List<string>();
            if (propertyName != null)
                propertyNameList.AddRange(propertyName);
            DataTable result = new DataTable();
            if (list.Count > 0)
            {
                PropertyInfo[] propertys = list[0].GetType().GetProperties();
                foreach (PropertyInfo pi in propertys)
                {
                    if (propertyNameList.Count == 0)
                    {
                        result.Columns.Add(pi.Name, pi.PropertyType);
                    }
                    else
                    {
                        if (propertyNameList.Contains(pi.Name))
                            result.Columns.Add(pi.Name, pi.PropertyType);
                    }
                }

                for (int i = 0; i < list.Count; i++)
                {
                    ArrayList tempList = new ArrayList();
                    foreach (PropertyInfo pi in propertys)
                    {
                        if (propertyNameList.Count == 0)
                        {
                            object obj = pi.GetValue(list[i], null);
                            tempList.Add(obj);
                        }
                        else
                        {
                            if (propertyNameList.Contains(pi.Name))
                            {
                                object obj = pi.GetValue(list[i], null);
                                tempList.Add(obj);
                            }
                        }
                    }
                    object[] array = tempList.ToArray();
                    result.LoadDataRow(array, true);
                }
            }
            return result;
        }  

 

需要在泛型和子类代码中相互引用的 C++ 类

】需要在泛型和子类代码中相互引用的C++类【英文标题】:C++classesthatneedtorefertoeachotherbothingenericandsubclasscode【发布时间】:2011-12-0203:53:02【问题描述】:我有三个类,config、circuit和conn,它们相互保存指针,如下所示:structconfig... 查看详情

datatable和list相互转换

由于C#3.0出现了扩展方法 我们可以通过这样一个特性来简化我们的开发.DataTable转换为List<T>的我们可以通过扩展DataTable来简化publicstaticclassDataTableExtensions///<summary>///DataTable转换为List集合///</summary>///<typeparamnam 查看详情

list泛型转换成datatable

publicDataTableListToDataTable<T>(List<T>list){DataTabledt=newDataTable("CarInfo");Typetype=typeof(T);//根据类型获取类型System.Reflection.PropertyInfo[]properts=type.GetProperties();//根据反射类型获取类型所有 查看详情

c#中的泛型和泛型集合

泛型泛型引入了一个概念:类型参数。通过使用类型参数(T)减少了运行时强制转换或装箱操作的风险,通过泛型可以最大限度的重用代码,保护类型的安全及提高性能,他的最常见应用就是创建集合类,可以约束集合类中的元... 查看详情

封装一个list集合和datatable相互转换的工具类(代码片段)

///<summary>///List转换为DataTable对象///</summary>publicclassListTranTableModel///<summary>///新增的列名称///</summary>publicstringaddColumNameget;set;///<summary>///新增列的默认信息/// 查看详情

泛型list转换成datatable(代码片段)

1privateDataTablelistToDataTable<T>(List<T>ListItem)23//实列化DataTable对象4vardt=newDataTable(typeof(T).Name);56//通过反射获取List实体的属性信息7PropertyInfo[]propertyInfos=typeof(T).GetProperties(BindingFlags.Public|BindingFlags.Instance);89//给DataTable添加定义1... 查看详情

datatable转成list集合

...几天就碰到这个问题,网上搜索整理了一个万能类,用了泛型和反射的知识。共享如下: 按Ctrl+C复制代码publicclassModelConvertHelper<T>whereT:new()//此处一定要加上new(){publicstaticIList<T>ConvertToMo 查看详情

datatable转换泛型list帮助类

...publicclassModelConvertHelper<T>whereT:new()///<summary>///List泛型转换DataTable.///</summary>publicDataTableListToDataTable<T>(List<T>items)vartb=newDataTable(typeof(T).Name);PropertyInfo[]props=typeof(T).GetProperties(BindingFlags.Public|BindingFlags.Instance);for... 查看详情

kotlin小知识之泛型和委托(代码片段)

文章目录泛型和委托泛型的基本用法类委托和委托属性类委托委托属性实现一个自己的lazy函数泛型和委托泛型的基本用法Kotlin当中的泛型机制和Java当中的泛型机制还是有异同的所谓泛型就是说在一般的编程模式下面,我们需要给... 查看详情

datatable和list的转换

...用传统的数据绑定造成了不便。下面介绍datatable和list的相互转换 1.datatable转换为listpublicList<T>GetList<T>(DataTabletable){Li 查看详情

小5聊c#通过将datatable转为list泛型遇到的问题

1、报错信息如下2、原因因为update_time属性设置了只读,不可设置值,所以转换时会报错提示   查看详情

泛型和强制转换 - 不能将继承的类强制转换为基类

】泛型和强制转换-不能将继承的类强制转换为基类【英文标题】:Genericsandcasting-cannotcastinheritedclasstobaseclass【发布时间】:2010-08-2007:06:11【问题描述】:我知道这已经过时了,但我仍然不太了解这些问题。谁能告诉我为什么以... 查看详情

小5聊c#通过将datatable转为list泛型遇到的问题

1、报错信息如下2、原因因为update_time属性设置了只读,不可设置值,所以转换时会报错提示   查看详情

使方法泛型和属性

】使方法泛型和属性【英文标题】:Makingmethodgenericandattributes【发布时间】:2021-08-1309:15:19【问题描述】:我在4、5个屏幕上使用非常相似的方法,基本上在不同对象的列表上做同样的事情。现在我提取了该方法以重用它并使其... 查看详情

泛型和object的区别?(代码片段)

泛型声明public<T>TdoSomeThing(Tt)returnt;Object声明publicObjectdoSomeThing(Objectobj)returnobj;泛型引用Stringresult=doSomeThing("参数是String");Object引用Stringresult=(String)doSomeThing("参数是String");使用泛型,有2个好处:1.不需要做强制类型转换2.编译... 查看详情

java里的泛型和通配符

...来,取出A,B单独的对象希望我的回答你满意。参考技术A泛型可以用"<T>"代表,任意类型的。解释:“<T>”是泛型的默认值,可以被任意类型所代替,如:List<String>list=newArayList<String>();这个就定义了一个... 查看详情

jdk1.8的泛型和之前的不一样吗

...线,报错和我说改成jdk1.5的,改了之后就没问题了是1.8的泛型改了吗是的。jdk1.8的泛型可以不用写参数T。比如定义:List<String>tempList=newArrayList<>();即泛型实例化类型自动推断。java8里面泛型的目标类型推断主要2个:1.支... 查看详情

Java 泛型接口转换

】Java泛型接口转换【英文标题】:JavaGenericsInterfacecasting【发布时间】:2014-05-0303:25:01【问题描述】:我偶然发现了一个涉及我不理解的泛型和接口的Java转换情况。请考虑以下我创建List&lt;Interface1&gt;的代码。然后get()一个... 查看详情