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>
Exemple d'instanciation:
public static DataSet GetACCOUNTSsDS()
Sa peut servir lorsqu'on souhaite remplir un GridView avec un DataSet plutot qu'une liste d'élément.
{
/// <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;
}
}
{
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;
}
L'intérêt est de pouvoir utiliser les méthodes de tri et de pagination automatiquement.
Write a comment
