Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ExpandoObject to DataTable

I'm new ExpandoObject (indeed, i found out about it yesterday). I have the following code and wonder if there is a method of some sort to convert ExpandoObject to a DataTable that I'm not aware of? Or i have to use reflection to convert it myself?

dynamic contacts = new List<dynamic>();

contacts.Add(new ExpandoObject());
contacts[0].Name = "Patrick Hines";
contacts[0].Phone = "206-555-0144";

contacts.Add(new ExpandoObject());
contacts[1].Name = "Ellen Adams";
contacts[1].Phone = "206-555-0155";
like image 840
NKD Avatar asked Dec 05 '25 17:12

NKD


1 Answers

Here is what I have to convert it. But if anyone has a better method, please let me know.

    public DataTable ToDataTable(IEnumerable<dynamic> items)
    {
        var data = items.ToArray();
        if (data.Count() == 0) return null;

        var dt = new DataTable();
        foreach (var key in ((IDictionary<string, object>)data[0]).Keys)
        {
            dt.Columns.Add(key);
        }
        foreach (var d in data)
        {
            dt.Rows.Add(((IDictionary<string, object>)d).Values.ToArray());
        }
        return dt;
    }
like image 165
NKD Avatar answered Dec 08 '25 09:12

NKD



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!