using Newtonsoft.Json.Linq;
public static void Main()
var table = new DataTable();
table.Columns.Add("Block");
table.Columns.Add("HouseNo");
table.Columns.Add("ResidentId", typeof(int));
table.Rows.Add("A", "101", 1);
table.Rows.Add("A", "102", 2);
table.Rows.Add("A", "103", 3);
table.Rows.Add("B", "201", 4);
table.Rows.Add("B", "202", 5);
table.Rows.Add("B", "204", 6);
table.Rows.Cast<DataRow>()
.GroupBy(r => r["Block"])
.Select(g => new JProperty("Block " + g.Key,
new JProperty(r["ResidentId"].ToString(), r["HouseNo"])
var json = obj.ToString();