zoukankan      html  css  js  c++  java
  • IList及泛型集合类转换DataTable

            /// <summary>
            
    /// 将集合类转换成DataTable
            
    /// </summary>
            
    /// <param name="list">集合</param>
            
    /// <returns></returns>

            public static DataTable ToDataTable(IList list)
            
    {
                DataTable result 
    = new DataTable();
                
    if (list.Count > 0)
                
    {
                    PropertyInfo[] propertys 
    = list[0].GetType().GetProperties();
                    
    foreach (PropertyInfo pi in propertys)
                    
    {
                        result.Columns.Add(pi.Name, pi.PropertyType);
                    }


                    
    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;
            }


            
    /// <summary>
            
    /// 将泛型集合类转换成DataTable
            
    /// </summary>
            
    /// <typeparam name="T">集合项类型</typeparam>
            
    /// <param name="list">集合</param>
            
    /// <returns>数据集(表)</returns>

            public static DataTable ToDataTable<T>(IList<T> list)
            
    {
                
    return  ConvertX.ToDataTable<T>(list, null);
            }


            
    /// <summary>
            
    /// 将泛型集合类转换成DataTable
            
    /// </summary>
            
    /// <typeparam name="T">集合项类型</typeparam>
            
    /// <param name="list">集合</param>
            
    /// <param name="propertyName">需要返回的列的列名</param>
            
    /// <returns>数据集(表)</returns>

            public static DataTable ToDataTable<T>(IList<T> list, params string[] propertyName)
            
    {
                List
    <string> propertyNameList = new List<string>();
                
    if (propertyName != null)
                    propertyNameList.AddRange(propertyName);

                DataTable result 
    = new DataTable();
                
    if (list.Count > 0)
                
    {
                    PropertyInfo[] propertys 
    = list[0].GetType().GetProperties();
                    
    foreach (PropertyInfo pi in propertys)
                    
    {
                        
    if (propertyNameList.Count == 0)
                        
    {
                            result.Columns.Add(pi.Name, pi.PropertyType);
                        }

                        
    else 
                        
    {
                            
    if (propertyNameList.Contains(pi.Name))
                                result.Columns.Add(pi.Name, pi.PropertyType);
                        }

                    }


                    
    for (int i = 0; i < list.Count; i++)
                    
    {
                        ArrayList tempList 
    = new ArrayList();
                        
    foreach (PropertyInfo pi in propertys)
                        
    {
                            
    if (propertyNameList.Count == 0)
                            
    {
                                
    object obj = pi.GetValue(list[i], null);
                                tempList.Add(obj);
                            }

                            
    else
                            
    {
                                
    if (propertyNameList.Contains(pi.Name))
                                
    {
                                    
    object obj = pi.GetValue(list[i], null);
                                    tempList.Add(obj);
                                }

                            }

                        }

                        
    object[] array = tempList.ToArray();
                        result.LoadDataRow(array, 
    true);
                    }

                }

                
    return result;
            }

  • 相关阅读:
    Struts2 拦截器(interceptor) 与 模型驱动3中传值方式
    Struts2 OGNL表达式
    ThreadLocal 是什么
    struts2的值栈(重点) 值栈是一个存储数据的内存结构 本质是一个接口 它的实现类OgnlValueStack
    Struts2 普通的java类 (Action)与Servlet通信 主要对象那个ServletActionContext 与 ActionContext对象来获取servlet中request对象和response对象
    struts2是多例的
    Django中一个项目里怎么使用两个数据库
    MYSQL中的锁
    详解Linux中文乱码问题终极解决方法
    Docker-compose up时报错:
  • 原文地址:https://www.cnblogs.com/zhahost/p/1212470.html
Copyright © 2011-2022 走看看