zoukankan      html  css  js  c++  java
  • 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;

            }

     

  • 相关阅读:
    C++资源之不完全导引(下)
    Box2D:给你的Qt程序加上物理引擎
    优秀程序员45种习惯
    Android中AVD的使用以及错误处理方法
    C++资源之不完全导引(上)
    CSS制作横向菜单,如何让li元素在ul中居中?
    PHP SESSION
    函数返回值
    鼠标经过tr背景变色的js代码
    点击按钮下载
  • 原文地址:https://www.cnblogs.com/mol1995/p/6570915.html
Copyright © 2011-2022 走看看