• Live2D 看板娘 / Demo


            /// <summary>
            /// 将List转换为DataTable
            /// </summary>
            /// <param name="list">请求数据</param>
            /// <returns></returns>
            public static DataTable ListToDataTable<T>(List<T> list)
            {
                //创建一个名为"tableName"的空表
                DataTable dt = new DataTable("tableName");
    
                //创建传入对象名称的列
                foreach (var item in list.FirstOrDefault().GetType().GetProperties())
                {
                    dt.Columns.Add(item.Name);
                }
                //循环存储
                foreach (var item in list)
                {
                    //新加行
                    DataRow value = dt.NewRow();
                    //根据DataTable中的值,进行对应的赋值
                    foreach (DataColumn dtColumn in dt.Columns)
                    {
                        int i = dt.Columns.IndexOf(dtColumn);
                        //基元元素,直接复制,对象类型等,进行序列化
                        if (value.GetType().IsPrimitive)
                        {
                            value[i] = item.GetType().GetProperty(dtColumn.ColumnName).GetValue(item);
                        }
                        else
                        {
                            value[i] = JsonConvert.SerializeObject(item.GetType().GetProperty(dtColumn.ColumnName).GetValue(item));
                        }
                    }
                    dt.Rows.Add(value);
                }
                return dt;
            }
            public static DataTable ListToDataTable<T>(List<T> list)
            {
                System.Data.DataTable result = new System.Data.DataTable();
                if (list.Count > 0)
                {
                    PropertyInfo[] propertys = list[0].GetType().GetProperties();
                    foreach (PropertyInfo pi in propertys)
                    {
                        //获取类型
                        Type colType = pi.PropertyType;
                        //当类型为Nullable<>时
                        if ((colType.IsGenericType) && (colType.GetGenericTypeDefinition() == typeof(Nullable<>)))
                        {
                            colType = colType.GetGenericArguments()[0];
                        }
                        result.Columns.Add(pi.Name, colType);
                    }
                    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;
            }
  • 相关阅读:
    如何在Oracle官网下载java的JDK最新版本和历史版本
    屏幕录制专家【Bandicam】
    Bandicam下载 + 破解
    华为荣耀7i手动更改DNS,提高网页加载速度
    SQL中使用GROUP BY注意事项
    JavaScript数据类型判断
    React.lazy和Suspense组合实现组件懒加载
    使用React+TypeScript构建自己的组件库
    leetcode-0101 对称二叉树
    leetcode-0543 二叉树的直径
  • 原文地址:https://www.cnblogs.com/duhaoran/p/14153522.html
Copyright © 2020-2023  润新知