DataRow - ToExpandoObject

A DataRow extension method that converts the @this to an expando object.

Try it

public static void Main()
{
	var table = new DataTable();

    table.Columns.Add("IntColumn", typeof (int));
    table.Columns.Add("StringColumn", typeof (string));
    table.Rows.Add(1, "Fizz");

	//C# Extension Method: DataRow - ToExpandoObject
    var entity = table.Rows[0].ToExpandoObject();

    Console.WriteLine(entity.IntColumn);
	Console.WriteLine(entity.StringColumn);
}

View Source
using System.Collections.Generic;
using System.Data;
using System.Dynamic;

public static partial class Extensions
{
    /// <summary>A DataRow extension method that converts the @this to an expando object.</summary>
    /// <param name="this">The @this to act on.</param>
    /// <returns>@this as a dynamic.</returns>
    public static dynamic ToExpandoObject(this DataRow @this)
    {
        dynamic entity = new ExpandoObject();
        var expandoDict = (IDictionary<string, object>) entity;

        foreach (DataColumn column in @this.Table.Columns)
        {
            expandoDict.Add(column.ColumnName, @this[column]);
        }

        return expandoDict;
    }
}