using System.Collections.Generic;
static void Main(string[] args)
var data = new List<List<IndexData>>
new IndexData { Name = "ESG Sustainability", Date = new DateTime(2022, 01, 31), ReturnRate = 0 },
new IndexData { Name = "S&P BSE 100 Total Return Index", Date = new DateTime(2022, 01, 31), ReturnRate = 0 },
new IndexData { Name = "S&P BSE Sensex Total Return Index", Date = new DateTime(2022, 01, 31), ReturnRate = 0 },
new IndexData { Name = "NIFTY 100 Total Return Index", Date = new DateTime(2022, 01, 31), ReturnRate = 0 },
new IndexData { Name = "NIFTY 50 Total Return Index", Date = new DateTime(2022, 01, 31), ReturnRate = 0 }
new IndexData { Name = "ESG Sustainability", Date = new DateTime(2022, 02, 01), ReturnRate = -0.08 },
new IndexData { Name = "S&P BSE 100 Total Return Index", Date = new DateTime(2022, 02, 01), ReturnRate = -0.04 },
new IndexData { Name = "NIFTY 100 Total Return Index", Date = new DateTime(2022, 02, 01), ReturnRate = -0.02 },
new IndexData { Name = "NIFTY 50 Total Return Index", Date = new DateTime(2022, 02, 01), ReturnRate = -0.10 }
var groupedByDate = data.SelectMany(list => list)
.GroupBy(index => index.Date)
var a =group.ToDictionary(index => index.Name, index => index.ReturnRate.ToString());
a["date"] = group.Key.ToString("yyyy-MM-dd");
string json = JsonConvert.SerializeObject(groupedByDate, Formatting.Indented);
public string Name { get; set; }
public DateTime Date { get; set; }
public double ReturnRate { get; set; }