核心点就是表头(行)和 列表 进行分组(表示key),其他则为数据
List<(int cityId, int month, int status, string value)> dataSource = new List<(int cityId, int month, int status, string value)>();
dataSource.Add((4, 1, 6, "aaaaa"));
dataSource.Add((4, 2, 6, "bbbbbb"));
dataSource.Add((4, 3, 6, "cccccc"));
dataSource.Add((5, 1, 6, "iiiii"));
dataSource.Add((5, 2, 6, "jjjjj"));
dataSource.Add((5, 3, 6, "kkkkk"));
var queryCity = items.Select(x => x.City).Distinct();
List<Dictionary<string, object>> list = new List<Dictionary<string, object>>();
foreach (var cityId in queryCity)
{
Dictionary<string, object> monthDict = new Dictionary<string, object>();
monthDict.Add("city", cityId);
for (int i = 1; i < 13; i++)
{
var data = items.Where(q => q.City == cityId && q.Month == i && q.AreaStatus == 6).SingleOrDefault();
monthDict.Add($"month{i}",data);
}
list.Add(monthDict);
}