• list转换成DataTable


    list转换成DataTable类如下:

    public static DataTable ToDataTable<T>(this  IList<T> datas)
            {
                DataTable dt = new DataTable();
                Type type = typeof(T);
                PropertyInfo[] properties = type.GetProperties();
                List<KeyValuePair<PropertyInfo, ExportFieldAttribute>> propertyInfos = new List<KeyValuePair<PropertyInfo, ExportFieldAttribute>>();
    
                //获取需要导出列信息
                foreach (PropertyInfo propertyInfo in properties)
                {
                    ExportFieldAttribute attribute = Attribute.GetCustomAttribute(propertyInfo, typeof(ExportFieldAttribute)) as ExportFieldAttribute;
                    if (attribute != null)
                    {
                        propertyInfos.Add(new KeyValuePair<PropertyInfo, ExportFieldAttribute>(propertyInfo, attribute));
                    }
                }
    
               propertyInfos= propertyInfos.OrderBy(p => p.Value.Sort).ToList();//列排序
    
                //添加列
               propertyInfos.ForEach(p =>
               {
                   DataColumn dataColumn = new DataColumn(p.Key.Name, p.Key.PropertyType);
                   dt.Columns.Add(dataColumn);
               } );
    
               datas.ToList().ForEach(data =>
               {
                   DataRow dtRow = dt.NewRow();
                   foreach (PropertyInfo propertyInfo in propertyInfos.Select(p => p.Key))
                   {
                       dtRow[propertyInfo.Name] = propertyInfo.GetValue(data, null);
                   }
                   dt.Rows.Add(dtRow);
               }
               );
                ////填充数据
                //foreach (T data in datas)
                //{
                //    DataRow dtRow = dt.NewRow();
                //    foreach (PropertyInfo propertyInfo in propertyInfos.Select(p=>p.Key))
                //    {
                //      dtRow[propertyInfo.Name]=propertyInfo.GetValue(data, null);
                //    }
                //    dt.Rows.Add(dtRow);
                //}
    
                return dt;
            }
    View Code

    属性类如下:

    public class ExportFieldAttribute : Attribute
        {
            public ExportFieldAttribute()
            {
            }
    
            public ExportFieldAttribute(int sort)
            {
                Sort = sort;
            }
            public int Sort { get; set; }//排序
        }
    View Code

    属性标记的类如下:

     public class DiscardStatics
        {
            private string _sn;
    
            [ExportFieldAttribute(Sort=2)]
            public string Sn
            {
                get { return _sn; }
                set { _sn = value; }
            }
    
            private string _propertyName;
    
            [ExportFieldAttribute(3)]
            public string PropertyName
            {
                get { return _propertyName; }
                set { _propertyName = value; }
            }
            private string aa { get; set; }
    
            private string _type;
            [ExportFieldAttribute(5)]
            public string Type
            {
                get { return _type; }
                set { _type = value; }
            }
    
            private DateTime _discardTime;
            [ExportFieldAttribute(4)]
            public DateTime DiscardTime
            {
                get { return _discardTime; }
                set { _discardTime = value; }
            }
    
            private double residuals;
            [ExportFieldAttribute(1)]
            public double Residuals
            {
                get { return residuals; }
                set { residuals = value; }
            }
    
            private string _propertyId;
            public string PropertyId
            {
                get { return _propertyId; }
                set { _propertyId = value; }
            }
    
            private string _brand;
            public string Brand
            {
                get { return _brand; }
                set { _brand = value; }
            }
    
            private string _supplier;
            public string Supplier
            {
                get { return _supplier; }
                set { _supplier = value; }
            }
    
            private string _contactInfo;
            public string ContactInfo
            {
                get { return _contactInfo; }
                set { _contactInfo = value; }
            }
    
            private string _childPtyId;
            public string ChildPtyId
            {
                get { return _childPtyId; }
                set { _childPtyId = value; }
            }
    
            private string _childPtyName;
            public string ChildPtyName
            {
                get { return _childPtyName; }
                set { _childPtyName = value; }
            }
        }
    View Code
  • 相关阅读:
    C++ Primer 学习笔记
    闷热的北京
    EasyUI实现购物车、菜单和窗口栏等最常用的用户界面功能.
    详细解读-this-关键字在全局、函数、对象、jQuery等中的基础用法!
    对于JavaScript原生的JS
    关于JavaScript原生的JS。工作接近一年,发现对于原生JS的基础内容总是不够掌握,特定抽出三个周的周末,结合本人的工作经验还有菜鸟教程及w3school的基础内容等整理了如下内容。对JS的常用知识进行概括!希望对大家能够有所帮助。
    最简单实用的JQuery实现banner图中的text打字动画效果!!!
    一路慢行的JavaScript之旅(add)!!!
    一路慢行的CSS之旅
    一路慢行的HTML5之旅!
  • 原文地址:https://www.cnblogs.com/donchen/p/3980201.html
Copyright © 2020-2023  润新知