mardi 19 avril 2016

How to convert IEnumerable

I am stuck with the following problem:

I normally use the function below to transfer custom data to DataTable but in this case the input data is a class composed of lists. I just need to write in DataTable the first element of each list per row. Could you help me to adjust this function in order to achieve this?

    public List<int> xID { get; set; }
    public List<string> xName { get; set; }
    public List<string> xType { get; set; }
    public List<string> xSource { get; set; }
    public List<int> xmdID { get; set; }
    public List<string> xMDName { get; set; }
    public List<string> xUser { get; set; }

    public static DataTable ListToDataTable<T>(IEnumerable<T> list)
    {
        Type type = typeof(T);
        var properties = type.GetProperties();

        DataTable dataTable = new DataTable();
        foreach (PropertyInfo info in properties)
        {
            dataTable.Columns.Add(new DataColumn(info.Name, info.PropertyType));
        }

        foreach (T entity in list)
        {
            object[] values = new object[properties.Length];
            for (int i = 0; i < properties.Length; i++)
            {
                values[i] = properties[i].GetValue(entity);
            }

            dataTable.Rows.Add(values);
        }

        return dataTable;
    }





Aucun commentaire:

Enregistrer un commentaire