using System.Collections.Generic;
public static void Main()
var results = Data.GetData();
var resultsV2 = results.GroupBy(r => r.Gender);
var list = new List<IDictionary<string, object>>();
foreach(var g in resultsV2)
IDictionary<string, object> obj = new ExpandoObject();
var data = g.Select(x => x);
obj["Gender"] = $"{g.Key}";
var propName = $"{d.Age}";
obj[propName] = $"{d.Value}";
string jsonString = JsonSerializer.Serialize(list);
Console.WriteLine(jsonString);
public string Gender { get; set; }
public int Age { get; set; }
public int Value { get; set; }
public static List<Data> GetData()
new Data() { Gender = "Male", Age = 20, Value = 5 },
new Data() { Gender = "Male", Age = 30, Value = 3 },
new Data() { Gender = "Female", Age = 20, Value = 9 }