• List转Datable(需区分对象充当List成员和数组充当List成员两种情况)


    对象充当List成员时:

    /// <summary>

            /// 将泛类型集合List类转换成DataTable

            /// </summary>

            /// <param name="list">泛类型集合</param>

            /// <returns></returns>

            public static DataTable ListToDataTable<T>(List<T> entitys)

            {

                //检查实体集合不能为空

                if (entitys == null || entitys.Count < 1)

                {

                    throw new Exception("需转换的集合为空");

                }

                //取出第一个实体的所有Propertie

                Type entityType = entitys[0].GetType();

                PropertyInfo[] entityProperties = entityType.GetProperties();

     

                //生成DataTable的structure

                //生产代码中,应将生成的DataTable结构Cache起来,此处略

                DataTable dt = new DataTable();

                for (int i = 0; i < entityProperties.Length; i++)

                {

                    //dt.Columns.Add(entityProperties[i].Name, entityProperties[i].PropertyType);

                    dt.Columns.Add(entityProperties[i].Name);

                }

                //将所有entity添加到DataTable中

                foreach (object entity in entitys)

                {

                    //检查所有的的实体都为同一类型

                    if (entity.GetType() != entityType)

                    {

                        throw new Exception("要转换的集合元素类型不一致");

                    }

                    object[] entityValues = new object[entityProperties.Length];

                    for (int i = 0; i < entityProperties.Length; i++)

                    {

                        entityValues[i] = entityProperties[i].GetValue(entity, null);

                    }

                    dt.Rows.Add(entityValues);

                }

                return dt;

            }

     

    数组充当List成员时:

    public static DataTable ListArrayToDataTable(List<string[]> entitys, string[] colname = null)

            {

                //检查实体集合不能为空

                if (entitys == null || entitys.Count < 1)

                {

                    throw new Exception("需转换的集合为空");

                }

     

                DataTable dt = new DataTable();

     

                if (colname != null)

                {

                    if (colname.Length != entitys[0].Length)

                        throw new Exception("名称数组与成员数组维度不一致");

     

                    foreach (string nm in colname)

                        dt.Columns.Add(nm, typeof(string));

                }

                else

                {

                    foreach (string nm in entitys[0])

                        dt.Columns.Add("", typeof(string));

                }

     

                //将所有entity添加到DataTable中

                foreach (string[] entity in entitys)

                {

                    if (entity.Length != entitys[0].Length)

                    {

                        throw new Exception("数组维度不一致");

                    }

     

     

                    dt.Rows.Add(entity);

                }

                return dt;

            }

     

  • 相关阅读:
    HTML DOM教程 49JavaScript Number 对象
    jquery技巧总结
    eclipse常用快捷键汇总
    一个Hibernate 的简单教程
    HTML DOM教程 51JavaScript match() 方法
    Java开源项目Hibernate包作用详解
    Build system 英文说明 Andrlid.mk说明
    android通过 哪些变量 来决定 哪些应用 会被编译进系统
    android“设置”里的版本号
    android设置中PreferenceActivity的 小结
  • 原文地址:https://www.cnblogs.com/mol1995/p/6570915.html
Copyright © 2020-2023  润新知