zoukankan      html  css  js  c++  java
  • IListHelper 实现IList到DataSet和DataTable的数据转换

    /// <summary>
        
    /// List Transfer DataTable Class
        
    /// </summary>

        public class IListHelper
        
    {
            
    /// <summary>
            
    /// Ilist<T> Transfer DataSet
            
    /// </summary>
            
    /// <param name="i_objlist"></param>
            
    /// <returns></returns>

            public static DataSet ConvertToDataSet<T>(IList<T> i_objlist)
            
    {
                
    if (i_objlist == null || i_objlist.Count <= 0)
                
    {
                    
    return null;
                }
     
                DataSet ds 
    = new DataSet();
                DataTable dt 
    = new DataTable(typeof(T).Name);
                DataColumn column;
                DataRow row;

                System.Reflection.PropertyInfo[] myPropertyInfo 
    = typeof(T).GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);

                
    foreach (T t in i_objlist)
                
    {
                    
    if (t == null)
                    
    {
                        
    continue;
                    }


                    row 
    = dt.NewRow();

                    
    for (int i = 0, j = myPropertyInfo.Length; i < j; i++)
                    
    {
                        System.Reflection.PropertyInfo pi 
    = myPropertyInfo[i];

                        
    string name = pi.Name;

                        
    if (dt.Columns[name] == null)
                        
    {
                            column 
    = new DataColumn(name, pi.PropertyType);
                            dt.Columns.Add(column);
                        }


                        row[name] 
    = pi.GetValue(t, null);
                    }


                    dt.Rows.Add(row);
                }


                ds.Tables.Add(dt);

                
    return ds;
            }


            
    /// <summary>
            
    /// Ilist<T> Transfer DataTable
            
    /// </summary>
            
    /// <param name="i_objlist"></param>
            
    /// <returns></returns>

            public static DataTable ConvertToDataTable<T>(IList<T> i_objlist)
            
    {
                
    if (i_objlist == null || i_objlist.Count <= 0)
                
    {
                    
    return null;
                }

                DataTable dt 
    = new DataTable(typeof(T).Name);
                DataColumn column;
                DataRow row;

                System.Reflection.PropertyInfo[] myPropertyInfo 
    = typeof(T).GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);

                
    foreach (T t in i_objlist)
                
    {
                    
    if (t == null)
                    
    {
                        
    continue;
                    }


                    row 
    = dt.NewRow();

                    
    for (int i = 0, j = myPropertyInfo.Length; i < j; i++)
                    
    {
                        System.Reflection.PropertyInfo pi 
    = myPropertyInfo[i];

                        
    string name = pi.Name;

                        
    if (dt.Columns[name] == null)
                        
    {
                            column 
    = new DataColumn(name, pi.PropertyType);
                            dt.Columns.Add(column);
                        }


                        row[name] 
    = pi.GetValue(t, null);
                    }


                    dt.Rows.Add(row);
                }

                
    return dt;
            }

            
    /// <summary>
            
    /// Ilist Transfer DataTable
            
    /// </summary>
            
    /// <param name="i_objlist"></param>
            
    /// <returns></returns>

            public static DataTable ConvertToDataTable(IList i_objlist)
            
    {
                
    if (i_objlist == null || i_objlist.Count <= 0)
                
    {
                    
    return null;
                }

                DataTable dt 
    = new DataTable();
                DataRow row;

                System.Reflection.PropertyInfo[] myPropertyInfo 
    = i_objlist[0].GetType().GetProperties();

                
    foreach (System.Reflection.PropertyInfo pi in myPropertyInfo)
                
    {
                    
    if (pi == null)
                    
    {
                        
    continue;
                    }

                    dt.Columns.Add(pi.Name, System.Type.GetType(pi.PropertyType.ToString()));
                }

                
    for (int j = 0; j < i_objlist.Count; j++)
                
    {
                    row 
    = dt.NewRow();
                    
    for (int i = 0; i < myPropertyInfo.Length; i++)
                    
    {
                        System.Reflection.PropertyInfo pi 
    = myPropertyInfo[i];
                        row[pi.Name] 
    = pi.GetValue(i_objlist[j], null);
                    }

                    dt.Rows.Add(row);
                }

                
    return dt;
            }


            
    /// <summary>
            
    /// Ilist Transfer DataSet
            
    /// </summary>
            
    /// <param name="i_objlist"></param>
            
    /// <returns></returns>

            public static DataSet ConvertToDataSet(IList i_objlist)
            
    {
                
    if (i_objlist == null || i_objlist.Count <= 0)
                
    {
                    
    return null;
                }

                DataSet ds 
    = new DataSet();
                DataTable dt 
    = new DataTable();
                DataRow row;

                System.Reflection.PropertyInfo[] myPropertyInfo 
    = i_objlist[0].GetType().GetProperties();

                
    foreach (System.Reflection.PropertyInfo pi in myPropertyInfo)
                
    {
                    
    if (pi == null)
                    
    {
                        
    continue;
                    }

                    dt.Columns.Add(pi.Name, System.Type.GetType(pi.PropertyType.ToString()));
                }

                
    for (int j = 0; j < i_objlist.Count; j++)
                
    {
                    row 
    = dt.NewRow();
                    
    for (int i = 0; i < myPropertyInfo.Length; i++)
                    
    {
                        System.Reflection.PropertyInfo pi 
    = myPropertyInfo[i];
                        row[pi.Name] 
    = pi.GetValue(i_objlist[j], null);
                    }

                    dt.Rows.Add(row);
                }

                ds.Tables.Add(dt);
                
    return ds;
            }

        }
  • 相关阅读:
    bzoj2438
    bzoj3040
    [AHOI2009]维护序列
    [JSOI2008]最大数
    洛谷3378堆模板
    洛谷1439
    洛谷2756
    bzoj1016
    洛谷1875
    [模板] 强连通分量
  • 原文地址:https://www.cnblogs.com/adam/p/891324.html
Copyright © 2011-2022 走看看