Convert DataTable to List

后端 未结 14 1797
挽巷
挽巷 2020-12-04 12:09

I have an strongly typed DataTable of type MyType, I\'d like convert it in a List.

How can I do this ?

Thanks.

14条回答
  •  醉梦人生
    2020-12-04 12:41

    The method ConvertToList that is posted below and uses reflection works perfectly for me. Thanks.

    I made a slight modification to make it work with conversions on the T property types.

    public List ConvertToList(DataTable dt)
    {
        var columnNames = dt.Columns.Cast()
                .Select(c => c.ColumnName)
                .ToList();
        var properties = typeof(T).GetProperties();
        return dt.AsEnumerable().Select(row =>
        {
            var objT = Activator.CreateInstance();
            foreach (var pro in properties)
            {
                if (columnNames.Contains(pro.Name))
                {
                     PropertyInfo pI = objT.GetType().GetProperty(pro.Name);
                     pro.SetValue(objT, row[pro.Name] == DBNull.Value ? null : Convert.ChangeType(row[pro.Name], pI.PropertyType));
                }
            }
            return objT;
       }).ToList();
    }
    

    Hope it helps. Regards.

提交回复
热议问题