我有这样的数据表
ID CategoryID Category
1 1 Category1
2 1 Category2
我试图生成像这样的键控json
{
"1"
[
{Category: Category1},
{Category:Category2}
]
}
如何将我的数据表转换为dictionary<string, list<object>>
,以便我可以使用JSON.NET
对其进行序列化
是运行以复制字典的关键问题。
提前感谢任何想法。
答案 0 :(得分:2)
这里有完整的代码:
var dataTable = new DataTable();
dataTable.Columns.Add("ID", typeof(int));
dataTable.Columns.Add("CategoryID", typeof(int));
dataTable.Columns.Add("Category", typeof(string));
dataTable.Rows.Add(1, 1, "Category1");
dataTable.Rows.Add(2, 1, "Category2");
dataTable.Rows.Add(3, 2, "Category3");
dataTable.Rows.Add(4, 2, "Category4");
dataTable.Rows.Add(5, 1, "Category5");
dataTable.Rows.Add(6, 3, "Category6");
var dict = dataTable.AsEnumerable()
.GroupBy(row => row.Field<int>("CategoryID"))
.ToDictionary(
g => g.Key.ToString(),
g => g.Select(row => new { Category = row.Field<string>("Category") }).ToList()
);
var jss = new JavaScriptSerializer();
Console.WriteLine(jss.Serialize(dict));
最后一个字符串为你提供了json(为了更好的可读性,我将其格式化):
{
"1":
[
{"Category":"Category1"},
{"Category":"Category2"},
{"Category":"Category5"}
],
"2":
[
{"Category":"Category3"},
{"Category":"Category4"}
],
"3":
[
{"Category":"Category6"}
]
}