• c# DataTable 数据集处理DataTableHandler


    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Linq;
    using System.Reflection;
    using System.Text;
    using System.Collections;
    using System.IO;
    using System.Xml.Serialization;
    
    namespace HuaTong.General.Utility
    {
        /// <summary>
        /// 数据集处理
        /// </summary>
        public static class DataTableHandler
        {
            /// <summary>  
            /// 检查DataSet是否可用
            /// </summary>  
            public static bool CheckData(this DataSet ds, int valNum)
            {
                var flag = ds != null && ds.Tables.Count > 0;
                if (flag)
                {
                    int count = 0;
                    for (var i = 0; i < valNum; i++)
                    {
                        var dtflag = ds.Tables[i].CheckData();
                        if (dtflag) count++;
                    }
                    return count == valNum;
                }
                return flag;
            }
    
            /// <summary>
            /// 检查DataTable是否可用
            /// </summary>
            public static bool CheckData(this DataTable dt)
            {
                return dt != null && dt.Rows.Count > 0;
            }
    
            /// <summary>  
            /// 检查DataSet是否可用
            /// </summary>  
            public static DataRow FirstRow(this DataSet ds)
            {
                return ds.Tables[0].FirstRow();
            }
    
            /// <summary>
            /// 检查DataTable是否可用
            /// </summary>
            public static DataRow FirstRow(this DataTable dt)
            {
                return dt.Rows[0];
            }
    
            /// <summary>
            /// DataTable转换为List
            /// </summary>
            public static List<T> ToList<T>(this DataTable dt)
                where T : new()
            {
    
                List<T> list = new List<T>();
    
                foreach (DataRow dr in dt.Rows)
                {
                    T t = dr.ToEntity<T>();
                    //对象添加到泛型集合中
                    list.Add(t);
                }
                return list;
            }
    
            /// <summary>
            /// DataRow转换为实体
            /// </summary>
            public static T ToEntity<T>(this DataRow dr)
                where T : new()
            {
                if (dr == null)
                {
                    return default(T);
                }
    
                T model = new T();
                var props = ModelHandler.PropCache(model);
                for (int i = 0; i < dr.Table.Columns.Count; i++)
                {
                    if (props.Any(m => StringHelper.IsEqualString(m.Name, dr.Table.Columns[i].ColumnName)))
                    {
                        var prop = props.Single(m => StringHelper.IsEqualString(m.Name, dr.Table.Columns[i].ColumnName));
                        if (dr[i] != null && dr[i] != DBNull.Value)
                        {
                            prop.SetValue(model, Convert.ChangeType(dr[i], prop.PropertyType), null);
                        }
                    }
                }
                return model;
            }
    
            /// <summary>
            /// List转换为DataTable
            /// </summary>
            public static DataTable ToDataTable<T>(this List<T> items)
            {
                var tb = new DataTable(typeof(T).Name);
    
                PropertyInfo[] props = ModelHandler.PropCache<T>();
    
                foreach (PropertyInfo prop in props)
                {
                    Type t = ModelHandler.GetCoreType(prop.PropertyType);
                    tb.Columns.Add(prop.Name, t);
                }
    
                foreach (T item in items)
                {
                    var values = new object[props.Length];
    
                    for (int i = 0; i < props.Length; i++)
                    {
                        values[i] = props[i].GetValue(item, null);
                    }
    
                    tb.Rows.Add(values);
                }
    
                return tb;
            }
    
            /// <summary>
            /// DataTable转换为XML
            /// </summary>
            public static string ToXML(this DataTable dt)
            {
                if (!string.IsNullOrEmpty(dt.TableName))
                {
                    dt.TableName = "datatable_1";
                }
                //xml序列化对象
                XmlSerializer xmlSerial = new XmlSerializer(typeof(DataTable));
                StringWriter sw = new StringWriter();
                xmlSerial.Serialize(sw, dt); // 序列化table
                StringReader sr = new StringReader(sw.ToString());
                return sr.ReadToEnd();
            }
        }
    }
  • 相关阅读:
    文件的序列化和反序列化
    三个小功能,游戏倒计时,文件的序列化和反序列化,txt文档的读取和写入
    Unity 中Debug打印的全局注释方式和重写
    导航制作的几个步骤
    Unity中删除文件目录下的所有文件和查看文件里面的内容
    VS2017一些小技巧
    在Unity中图标进行鼠标图标更换
    Electron-Vue 使用 oss 实现上传、下载
    Electron-Vue 调用本地数据库
    构建 Electron-Vue 脚手架项目
  • 原文地址:https://www.cnblogs.com/password1/p/5870689.html
Copyright © 2020-2023  润新知