Logo de Media ap
Forum | Contact
Search the Web:

Transformer une Collection List générique en dataset List2DataSet (C#)


Le but est de transformer une liste d'élément en Dataset.

Dans cet exemple je transforme une liste de comptes en DS. 

 Création de la classe

   public class DataSetTools<T>
    {
        /// <summary>
        /// Convert a T List into DataSet
        /// GS 17/06/2008
        /// </summary>
        /// <param name="t"></param>
        /// <returns>DataSet</returns>
        public static DataSet List2DataSet(List<T> t)
        {
            DataSet ds = new DataSet();
            DataTable dt = new DataTable("result");
            DataRow row;
            System.Reflection.PropertyInfo[] prop = t[0].GetType().GetProperties();

            ///generate Columns of DataTable
            foreach (System.Reflection.PropertyInfo p in prop)
            {
                dt.Columns.Add(p.Name, p.GetGetMethod().ReturnType.BaseType);
            }

            ///Generate rows
            foreach (T item in t)
            {
                System.Reflection.PropertyInfo[] itemProp = item.GetType().GetProperties();

                row = dt.NewRow();
                foreach (System.Reflection.PropertyInfo p in itemProp)
                {
                    row[p.Name] = p.GetValue(item, null);

                }
                dt.Rows.Add(row);
            }

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

 

Exemple d'instanciation:

        public static DataSet GetACCOUNTSsDS()
        {
            RMS.BLL.ACCOUNTSBLL acc = new RMS.BLL.ACCOUNTSBLL();
            List<RMS.BusinessObjects.ACCOUNTS> list = acc.GetACCOUNTSs();
            DataSet ds = AQTools.DataSetTools<RMS.BusinessObjects.ACCOUNTS>.List2DataSet(list);
            return ds;
        }

 

Sa peut servir lorsqu'on souhaite remplir un GridView avec un DataSet plutot qu'une liste d'élément.
L'intérêt est de pouvoir  utiliser les méthodes de tri et de  pagination automatiquement.

Write a comment

  • Required fields are marked with *.

If you have trouble reading the code, click on the code itself to generate a new random code.
Security Code: