整数列表未转换为Datatable C#

时间:2016-03-18 14:25:42

标签: c# list

我想将列表转换为数据表格。我使用以下代码:

public static DataTable ConvertToDataTable(object o)
    {
        DataTable dt = new DataTable("OutputData");

        DataRow dr = dt.NewRow();
        dt.Rows.Add(dr);

        o.GetType().GetProperties().ToList().ForEach(f =>
        {
            try
            {
                f.GetValue(o, null);
                dt.Columns.Add(f.Name, f.PropertyType);
                dt.Rows[0][f.Name] = f.GetValue(o, null);
            }
            catch { }
        });
        return dt;
    }

以下是我尝试传递给ConverToDataTable方法的类对象:

   public class Class1
   {

    private List<int> _intList;


    public List<int> intList
    {
        get
        {
            return _intList;
        }
        set
        {
            _intList = value;
        }
    }
}

但是当我尝试将class1对象转换为DataTable时,我将数据表列作为count和Capacity ..我做错了什么?

2 个答案:

答案 0 :(得分:1)

如果要将整数列表转换为Datatable,则不需要使用Reflection。这可以解决。

public DataTable ConvertToDataTable(List<int> o)
{
    DataTable dt = new DataTable("OutputData");
    dt.Columns.Add("Integers", Type.GetType("System.Int32"));  
    foreach (var item in o)
    {
        DataRow dr = dt.NewRow();
        dt.Rows.Add(dr);
        dt.Rows[dt.Rows.Count - 1][0] = item;
    }           
    return dt;
}

但是如果要将对象列表转换为数据表,则必须使用反射。

答案 1 :(得分:0)

当然是因为您要在列表see this

中添加列表值而不是整数值